Bitmaps in unity

Since unity does not support System.Drawing.Bitmap, is there a way that I can bet the actual byte[] of an image that is read in?

I'm trying to get access to it through Unity's Texture2D, but that only gives me ConvertToPNG and not the actual bitmap bytes.

I've also tried to look at ImageMagickNET, but that just has a ToBitmap() image which returns a System.Drawing.Bitmap, which I can't use in unity.

Thanks, Liron

4 Answers

4

Not sure what you mean by "the actual byte[]" but I assume you mean the pixel data, not the entire file data. While I don't know if this helps, you could try WWW.bytes (loading via WWW class). Another way to get the pixel colors is Texture2D.GetPixels but that will give you a Color array.

If you need the blunt file data, you can probably use System.IO.File.ReadAllBytes, but then you'd need to parse the file format yourself.

By getting the actual byte[] data, I'm assuming you're trying to get the color data from the image data. You can something similar by running a loop to go through every pixel on the image, and use the Texture2D.GetPixel() to get color data, and store it all into one array.

In unity 3.4, they provided a GetPixes32 which actually gives you the data as bytes.

Texture2D cursor;

byte bytes;

cursor = new Texture2D(10, 10);

bytes = cursor.GetRawTextureData(); //it is?

string path = “C:/games/ii.png”;

System.IO.File.WriteAllBytes(path, cursor.EncodeToPNG()); // EncodeToPNG return byte