Skip to main content
 首页 » 编程设计

c#之将 byte[] 转换为 Windows.UI.Xaml.Media.Imaging.BitmapImage

2024年01月22日43yxwkf

在通用 Windows 应用程序上工作并尝试绑定(bind)作为 xaml 中的字节数组的图像。我有点迷路了。在 xaml 中我有类似的东西:

<Image Source="{Binding SelectedImageSource}" 
           Stretch="UniformToFill" 
           Grid.Row="1"/> 

在我的 View 模型中有

private byte[] _selectedImageSource; 
    public byte[] SelectedImageSource 
    { 
        get { return _selectedImageSource; } 
        set 
        { 
            _selectedImageSource = value; 
            OnPropertyChanged(nameof(SelectedImageSource)); 
        } 
    } 

但是我这里看不到图片。我认为我需要做的是将 byte[] 转换为 Windows.UI.Xaml.Media.Imaging.BitmapImage。我不是 100% 确定该怎么做,也不确定那是否是正确的做法。

请您参考如下方法:

试试这个:

public static async Task<BitmapImage> GetBitmapAsync(byte[] data) 
{ 
    var bitmapImage = new BitmapImage(); 
 
    using (var stream = new InMemoryRandomAccessStream()) 
    { 
        using (var writer = new DataWriter(stream)) 
        { 
            writer.WriteBytes(data); 
            await writer.StoreAsync(); 
            await writer.FlushAsync(); 
            writer.DetachStream(); 
        } 
 
        stream.Seek(0); 
        await bitmapImage.SetSourceAsync(stream); 
    } 
 
    return bitmapImage; 
} 

您也可以尝试更简单的版本 described here ,但我认为我遇到了一些问题,这就是为什么我现在使用上面的代码。