- Home /
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
Answer by Statement · Mar 10, 2011 at 01:06 AM
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.
Answer by kennypu · Mar 10, 2011 at 01:07 AM
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.
But doing this will take too long, since I already should have the data once the image file has been loaded. This would be the value of using the .net Bitmap class so that I could read the file pixel data in a block and not in a silly for loop. Theoretically I could use System.IO.File.ReadAllBytes like described above, but that would basically involve re-implementing the exiting system.drawing.bitmap in my code which I would prefer to avoid for obvious reasons... Anyone know why Unity doesn't provide any more functionality than CompressToPNG?
Answer by LKIM · Jan 12, 2012 at 03:58 PM
In unity 3.4, they provided a GetPixes32 which actually gives you the data as bytes.
Answer by normalmur · Dec 26, 2017 at 08:50 PM
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[]
Your answer
Follow this Question
Related Questions
Downsize/compress image on upload to Firebase? 0 Answers
Converting a float to a byte[]? Not working 2 Answers
[SOLVED] Bad PKCS7 While encrypting a file 1 Answer
Debugging Byte? 2 Answers
Converting Vector3 to Byte[]? 4 Answers