Конвертировать Xamarin.Forms.Image в Byte Array - PullRequest
0 голосов
/ 16 октября 2019

Простой вопрос: у меня есть Xamarin.Forms.Image, называемое «изображение». Мне нужно, чтобы это был байтовый массив. Я чувствую, что это должно быть простой вещью, но я не могу найти это в Интернете нигде.

var image = Xamarin.Forms.Image();
image.source = "my_image_source.png";

//Magic code

byte[] imgByteArray = ???

1 Ответ

1 голос
/ 17 октября 2019

К сожалению, класс Image не предоставляет методов для доступа к реальному изображению после загрузки.

Вам потребуется прочитать изображение из файла и преобразовать его в ожидаемый поток.

Чтобы предотвратить повторное чтение объекта изображения, вы можете установить поток чтения для Image элемента управления.

var image = Xamarin.Forms.Image();

var assembly = this.GetType().GetTypeInfo().Assembly;
byte[] imgByteArray = null;
using (var s = assembly.GetManifestResourceStream("my_image_source.png"))
{
    if (s != null)
    {
        var length = s.Length;
        imgByteArray = new byte[length];
        s.Read(buffer, 0, (int)length);

       image.Source = ImageSource.FromStream(() => s);
    }
}

// here imageByteArray will have the bytes from the image file or it will be null if the file was not loaded.

if (imgByteArray != null)
{
   //use your data here.
}

Надеюсь, это поможет .-

Обновление:

Этот код потребует добавления вашего my_image_source.png в качестве части PCL в качестве встроенного ресурса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...