gpt4 book ai didi

c# - 将字节数组转换为位图图像

转载 作者:IT王子 更新时间:2023-10-29 04:14:01 25 4
gpt4 key购买 nike

我要将字节数组转换为 System.Windows.Media.Imaging.BitmapImage 并在图像控件中显示 BitmapImage

当我使用第一个代码时,注意到了!没有错误,也没有显示图像。但是当我使用第二个时,它工作正常!谁能说说这是怎么回事?

第一个代码在这里:

public BitmapImage ToImage(byte[] array)
{
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(array))
{
BitmapImage image = new BitmapImage();
image.BeginInit();
image.StreamSource = ms;
image.EndInit();
return image;
}
}

第二个代码在这里:

public BitmapImage ToImage(byte[] array)
{
BitmapImage image = new BitmapImage();
image.BeginInit();
image.StreamSource = new System.IO.MemoryStream(array);
image.EndInit();
return image;
}

最佳答案

在第一个代码示例中,在实际加载图像之前关闭流(通过离开 using block )。您还必须设置 BitmapCacheOptions.OnLoad以实现图像立即加载,否则流需要保持打开状态,如第二个示例所示。

public BitmapImage ToImage(byte[] array)
{
using (var ms = new System.IO.MemoryStream(array))
{
var image = new BitmapImage();
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad; // here
image.StreamSource = ms;
image.EndInit();
return image;
}
}

来自 BitmapImage.StreamSource 中的备注部分:

Set the CacheOption property to BitmapCacheOption.OnLoad if you wish to close the stream after the BitmapImage is created.


除此之外,您还可以使用内置类型转换将类型 byte[] 转换为类型 ImageSource(或派生的 BitmapSource):

var bitmap = (BitmapSource)new ImageSourceConverter().ConvertFrom(array);

当您将 ImageSource 类型的属性(例如 Image 控件的 Source 属性)绑定(bind)到 string 类型的源属性时,将隐式调用 ImageSourceConverter >、Uribyte[]

关于c# - 将字节数组转换为位图图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14337071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com