装入一个字节[]为图像我具有由一个Image
表示的byte[]
。我通过WebClient
下载这个Image
。当WebClient
下载了图片,我使用它的URL引用它时,我得到一个byte[]
。我的问题是,如何将byte[]
加载到WPF中的Image
元素中?谢谢。在运行时
注意:这是我在这里问的问题的补充:Generate Image at Runtime。我似乎无法得到这种方法的工作,所以我正在尝试一种不同的方法。
装入一个字节[]为图像我具有由一个Image
表示的byte[]
。我通过WebClient
下载这个Image
。当WebClient
下载了图片,我使用它的URL引用它时,我得到一个byte[]
。我的问题是,如何将byte[]
加载到WPF中的Image
元素中?谢谢。在运行时
注意:这是我在这里问的问题的补充:Generate Image at Runtime。我似乎无法得到这种方法的工作,所以我正在尝试一种不同的方法。
您可以使用BitmapImage
,并设置其StreamSource
包含二进制数据流。如果你想从byte[]
做出stream
,使用MemoryStream
:我想出如何做,所以它是既快速
MemoryStream stream = new MemoryStream(bytes);
创建一个从MemoryStream
如下一个BitmapImage
:
MemoryStream byteStream = new MemoryStream(bytes);
BitmapImage image = new BitmapImage();
image.BeginInit();
image.StreamSource = byteStream;
image.EndInit();
而且在XAML可以创建一个Image
控制和设定上述image
为Source
财产。
这不仅适用于WinForms吗? – configurator 2009-02-24 22:24:06
:在.NET框架4.0
using System.Drawing;
using System.Web;
private Image GetImageFile(HttpPostedFileBase postedFile)
{
if (postedFile == null) return null;
return Image.FromStream(postedFile.InputStream);
}
的一种方式和线程安全的是以下几点:
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之后。
请注意,我期待一个byte []加载到System.Windows.Controls.Image实例。并非所有人都已经指出的System.Drawing.Image实例。 – user70192 2009-02-24 20:14:45