Как преобразовать BitmapImage в WriteableBitmap в универсальном приложении для Windows 10?

Я реализую универсальное приложение Windows в Windows 10, используя MVVM. У меня есть средство выбора файлов, позволяющее мне выбрать изображение. Это изображение отображается в элементе управления изображением. Источник элемента управления изображением привязан к свойству в моей модели представления. Это свойство представляет собой массив байтов. Мне нужен конвертер для преобразования BitmapImage в массив байтов. Я прочитал много вещей, но не могу найти что-то работающее. Я нашел интересные материалы на https://writeablebitmapex.codeplex.com/, но если я хочу использовать этот пакет мне нужен WriteableBitmap, а не BitmapImage. Спасибо заранее за вашу помощь.


person Zen Christophe    schedule 13.11.2015    source источник


Ответы (1)


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

var filePicker = new FileOpenPicker();
filePicker.FileTypeFilter.Add(".jpg");
var result = await filePicker.PickSingleFileAsync();

if (result != null)
{
    using (IRandomAccessStream stream = await result.OpenAsync(FileAccessMode.Read))
    {
        BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream);
        WriteableBitmap bmp = new WriteableBitmap((int)decoder.PixelWidth, (int)decoder.PixelHeight);
        bmp.SetSource(stream);

        // show the image in the UI if you want.
        MyImage.Source = bmp;
    }
}

Таким образом, у вас есть WriteableBitmap, и вы можете использовать библиотеку WriteableBitmapEx.

person Igor Ralic    schedule 13.11.2015
comment
Это очень хороший обходной путь. Спасибо за помощь. Я действительно ценю ! - person Zen Christophe; 13.11.2015
comment
Есть идеи, как этого добиться, не проходя мимо средства выбора файлов?? - person AymenDaoudi; 19.03.2016