- 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