- Home /
Textur2D and Filestream conversion
below is the code I am trying to modify.
static byte[] GetImageAsByteArray(string imageFilePath)
{
// Open a read-only file stream for the specified file.
using (FileStream fileStream =
new FileStream(imageFilePath, FileMode.Open, FileAccess.Read))
{
// Read the file's contents into a byte array.
BinaryReader binaryReader = new BinaryReader(fileStream);
return binaryReader.ReadBytes((int)fileStream.Length);
}
}
}
As you can see this code uses a file path. I want to pass an image Texture2D into the method like below:
static byte[] GetImageAsByteArray(Texture2D image)
How do I get the same output as the filestream method but using texture2d. Below is my attempt at it:
static byte[] GetImageAsByteArray(Texture2D image)
{
/* Open a read-only file stream for the specified file.
using (FileStream fileStream =
new FileStream(imageFilePath, FileMode.Open, FileAccess.Read))
*/
{
// Read the file's contents into a byte array.
Debug.Log("MADE IT TO GETIMAGESBYTEARR");
return binaryReader.ReadBytes(image.GetRawTextureData());
}
}
Answer by Bunny83 · May 24, 2019 at 12:37 AM
You seem to have trouble understanding what kind of data you actually handle here. A file on disk has a particular file format. For example image files may be stored as JPG, PNG, TIF, BMP, .... Each of those formats is fundamentally different from each other. Some are lossy some lossless, some are compressed some are not.
A Texture2D object is an image object in memory, optimised for GPU memory so it can be used by your GPU.
If you just want to convert a Texture2D into a common file format you probably want to use EncodeToPNG or one of the other supported formats. Note as you can read in the documentation the Texture2D need to have read / write enabled. So if you imported the image in Unity you have to change that in order to actually read the content of the image.
ps: Your first method is kind of redundant as System.IO.File.ReadAllBytes does already what you did there in one line.
Your answer
Follow this Question
Related Questions
UnityEditor - Drawing on a Texture 1 Answer
ReadPixels requires an offset while in the Editor? 2 Answers
How can I save the Bild from a Camera, which not main camera is. 1 Answer
Detect WWW Image bitmap dimensions? 2 Answers
Get RenderTexture 1 Answer