2009-02-24 76 views
12

装入一个字节[]为图像我具有由一个Image表示的byte[]。我通过WebClient下载这个Image。当WebClient下载了图片,我使用它的URL引用它时,我得到一个byte[]。我的问题是,如何将byte[]加载到WPF中的Image元素中?谢谢。在运行时

注意:这是我在这里问的问题的补充:Generate Image at Runtime。我似乎无法得到这种方法的工作,所以我正在尝试一种不同的方法。

+0

请注意,我期待一个byte []加载到System.Windows.Controls.Image实例。并非所有人都已经指出的System.Drawing.Image实例。 – user70192 2009-02-24 20:14:45

回答

5

您可以使用BitmapImage,并设置其StreamSource包含二进制数据流。如果你想从byte[]做出stream,使用MemoryStream:我想出如何做,所以它是既快速

MemoryStream stream = new MemoryStream(bytes); 
21

创建一个从MemoryStream如下一个BitmapImage

MemoryStream byteStream = new MemoryStream(bytes); 
BitmapImage image = new BitmapImage(); 
image.BeginInit(); 
image.StreamSource = byteStream; 
image.EndInit(); 

而且在XAML可以创建一个Image控制和设定上述imageSource财产。

+0

这不仅适用于WinForms吗? – configurator 2009-02-24 22:24:06

1

:在.NET框架4.0

using System.Drawing; 
using System.Web; 

private Image GetImageFile(HttpPostedFileBase postedFile) 
{ 
    if (postedFile == null) return null; 
    return Image.FromStream(postedFile.InputStream); 
} 
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); 

我扔的成转换器,用于我的WPF应用程序运行的图像作为VARBINARY从DB之后。