- Home /
cant get Texture2D.LoadImage() to work
For several reasons, and also just for experimentation I wanted to create a download class that mimics WWW. Without using the unity engine I can successfully download data from a website as a byte[] array. If the downloaded data is text I can easily convert the byte[] array to a string. But I cant get Texture2D.LoadImage() to convert the byte[] array to a Texture2D object, assuming an image was downloaded instead of text. I always get an image with the red question mark in its place.
can someone explain how to get Texture2D.LoadImage() to work properly?
Below is a watered down version of the download behavior and how Im attempting to convert it.
 public class Download {
     
     public byte[] bytes;
     public string text
     {
         get
         {
             if(bytes == null)
             {
                 Debug.LogError("text has not finished downloading yet");
                 return null;
             }
             return System.Text.Encoding.ASCII.GetString(bytes, 0, bytes.Length);
         }
     }
     public Texture2D image
     {
         get
         {
             if(bytes == null)
             {
                 Debug.LogError("image has not been downloaded yet");
                 return null;
             }
             
             Texture2D tex = new Texture2D(395,300);
             tex.LoadImage(bytes);
             tex.Apply();
             return tex;
         }
     }
 
     public void DownloadQueue()
     {
         Download download = queue.Dequeue();
         
         HttpWebRequest request = (HttpWebRequest)WebRequest.Create(download.path);
         HttpWebResponse response = (HttpWebResponse)request.GetResponse();
         
         if ((response.StatusCode == HttpStatusCode.OK || 
             response.StatusCode == HttpStatusCode.Moved || 
             response.StatusCode == HttpStatusCode.Redirect))
         {
             
             // if the remote file was found, download it
             using (Stream inputStream = response.GetResponseStream())                    
             {
                 byte[] buffer = new byte[4096];
                 int bytesRead;
                 do
                 {
                     bytesRead = inputStream.Read(buffer, 0, buffer.Length);                        
                 } while (bytesRead != 0);
                 
                 download.bytes = buffer;                                                
                 return;
             }    
         }
         else
         {
             Debug.LogError("Download Failed : " + download.path);
         }        
     }    
 }
Your answer
 
 
             Follow this Question
Related Questions
Combine Array of Sprites to Form One Sprite 0 Answers
Change texture of plane pixel by pixel (Unity 5) 0 Answers
Loading images fails on Android for existing Texture2Ds. 1 Answer
WWW Texture access takes a long time 3 Answers
www.texture memory leak 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                