Memory Leaks when play pictures from local card using Sprite.Create
Hi,
I created on Android a picture player that shows some pictures from the SD card. The code is like that:
private Start()
{
_texture2D = new Texture2D(1024, 1024, TextureFormat.RGBA4444, false);
_texture2D.Compress(true);
}
private IEnumerator LoadPicture(string file)
{
WWW www = new WWW("file://" + file);
yield return www;
www.LoadImageIntoTexture(_texture2D);
var sprite = Sprite.Create(_texture2D, new Rect(0, 0, _texture2D.width, _texture2D.height), Vector2.zero);
gameObject.GetComponent<Image>().sprite = sprite;
www.Dispose();
}
The WWW it's not giving me any leaks because I test it independently so it's ok. So how can I make this work? After 5 minutes the app crash and exit.
The solution to use:
gameObject.GetComponent<CanvasRenderer>().SetTexture(_texture);
is working but the picture is not keeping the ratio.
Thanks, Sorin
Answer by sora_jp · Mar 03, 2017 at 08:21 AM
Set the preserveAspect
property of the Image component to true, either in the inspector or in the Start/Awake method in your code. Then it should work.
Btw. I am not at a computer so i cannot test this right now.
Your answer
Follow this Question
Related Questions
[SOLVED] Problems creating a Sprite through script 0 Answers
2D Sprite.Create isn't working 0 Answers
Applying one sprite/texture across multiple gameobjects. (2D) 0 Answers
Generated texture is black unless fiddled with 1 Answer
How to make headlight effects on a sprite? (Increasing emission of sprite material) 0 Answers