Как конвертировать пользовательский интерфейс RawImage в байтовый массив - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь преобразовать 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);



}

1 Ответ

0 голосов
/ 08 ноября 2018

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[] в байты, см. this post.

...