Как конвертировать пользовательский интерфейс RawImage в байтовый массив
Я пытаюсь преобразовать 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 ответ
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[]
к байтовому массиву смотрите этот пост.