如何从Texture2D中获取编码的图像(PNG,JPG等)?

时间:2019-05-23 19:46:53

标签: c# unity3d

下面是我要修改的代码。

ngbDropdownMenu

如您所见,此代码使用文件路径。我想将图像Texture2D传递到如下方法中:

else

我如何获得与filestream方法相同的输出,但使用texture2d。以下是我的尝试:

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);
    }
}

1 个答案:

答案 0 :(得分:0)

根据所需的编码使用ImageConversion方法。

Texture2D image;    

// Encodes this texture into EXR format using ZIP compression
byte[] exrEncoded = ImageConversion.EncodeToEXR (image, Texture2D.EXRFlags.CompressZIP);

// Encodes this texture into JPG format
byte[] jpgEncoded = ImageConversion.EncodeToJPG (image);

// Encodes this texture into JPG format
byte[] pngEncoded = EncodeToPNG(image);

// Encodes this texture into TGA format
byte[] tgaEncoded = EncodeToTGA(image);

要使用这些功能,必须在纹理导入设置中将纹理的“启用读/写”标志设置为true。