在运行时将一个byte []加载到Image中

时间:2009-02-24 17:56:04

标签: c# wpf image

我有一个由byte[]表示的Image。我正在通过Image下载此WebClient。当WebClient下载了图片并使用其网址引用它时,我得到byte[]。我的问题是,如何将byte[]加载到WPF中的Image元素中?谢谢。

注意:这是我在这里提出的问题的补充:Generate Image at Runtime。我似乎无法使用这种方法,所以我正在尝试不同的方法。

4 个答案:

答案 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应用程序的转换器。