3

我正在尝试将 RawImage 转换为数组字节(bytes []),但 RawImage 没有 encondePNG 或其他东西来获取 RawImage 的字节,知道如何获取字节数组吗?

public class RegistryScreen : UIScreen
{

Texture2D pickedImage;
public RawImage[] getRawImageProfile;

public void ChangeIconImage()
{        
    PickImageFromGallery();

    //WebService
    mygetImageProfileRequestData = new getImageProfileRequestData();

    //this is the problem 
    mygetImageProfileRequestData.image = getRawImageProfile[0].texture; 

}

public void PickImageFromGallery(int maxSize = 1024)
{
    NativeGallery.GetImageFromGallery((path) =>
    {
        if (path != null)
        {
            // Create Texture from selected image
            pickedImage = NativeGallery.LoadImageAtPath(path, maxSize);

            ////Sust. texture in image(Sprite)
            for (int i = 0; i < getRawImageProfile.Length; i++)
            {
                getRawImageProfile[i].texture = pickedImage;      
            }
        } 


        Debug.Log("getRawImage: " + getRawImageProfile[0].texture);            

    }, maxSize: maxSize);



}
4

1 回答 1

6

RawImage只是一个渲染Texture分配给它的纹理属性的组件。要获取字节数组,您需要先访问它,Texture然后将其转换为Texture2D.

您的 RawImage 组件:

public RawImage rawImage;

获取它正在渲染的纹理,然后将其转换为 Texture2D:

Texture2D rawImageTexture = (Texture2D)rawImage.texture;

获取 png 或 jpeg 格式的字节数组:

byte[] pngData = rawImageTexture.EncodeToPNG();
byte[] jpegData = rawImageTexture.EncodeToJPG();

如果你想要 RawImage 的未压缩数据:

Color32[] rawData = rawImageTexture.GetPixels32();

要也将字节数组转换Color32[]为字节数组,请参见这篇文章。

于 2018-11-08T18:11:07.380 回答