我有一个由byte[]
表示的Image
。我正在通过Image
下载此WebClient
。当WebClient
下载了图片并使用其网址引用它时,我得到byte[]
。我的问题是,如何将byte[]
加载到WPF中的Image
元素中?谢谢。
注意:这是我在这里提出的问题的补充:Generate Image at Runtime。我似乎无法使用这种方法,所以我正在尝试不同的方法。
答案 0 :(得分:21)
从BitmapImage
创建MemoryStream
,如下所示:
MemoryStream byteStream = new MemoryStream(bytes);
BitmapImage image = new BitmapImage();
image.BeginInit();
image.StreamSource = byteStream;
image.EndInit();
在XAML中,您可以创建Image
控件,并将上述image
设置为 Source
属性。
答案 1 :(得分:5)
您可以使用BitmapImage
,并将其StreamSource
设置为包含二进制数据的流。如果您想使用stream
制作byte[]
,请使用MemoryStream
:
MemoryStream stream = new MemoryStream(bytes);
答案 2 :(得分:1)
在.Net framework 4.0中
using System.Drawing;
using System.Web;
private Image GetImageFile(HttpPostedFileBase postedFile)
{
if (postedFile == null) return null;
return Image.FromStream(postedFile.InputStream);
}
答案 3 :(得分:1)
我想出了如何做到这一点以便快速和线程安全的一种方法如下:
var imgBytes = value as byte[];
if (imgBytes == null)
return null;
using (var stream = new MemoryStream(imgBytes))
return BitmapFrame.Create(stream,BitmapCreateOptions.None, BitmapCacheOption.OnLoad);
在将数据库中的图像作为Varbinary运行后,我将其转换为WPF应用程序的转换器。