如何在 windows 10 的通用应用程序中将 BitmapImage 转换为 WriteableBitmap?

How to convert BitmapImage to WriteableBitmap in Universal application for windows 10?

我正在使用 MVVM 在 Windows 10 上实现通用 Windows 应用程序。 我有一个文件选择器,允许我选择一个图像。此图像显示在图像控件中。图像控件的源绑定到我的视图模型中的 属性。这个 属性 是一个字节数组。我需要一个转换器来将 BitmapImage 转换为字节数组。 我读了很多东西,但找不到有用的东西。 我在 https://writeablebitmapex.codeplex.com/ 上发现了有趣的东西 但如果我想使用这个包,我需要一个 WriteableBitmap 而不是 BitmapImage。 预先感谢您的帮助。

您可以直接从文件中将图像加载到 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 库。