2010-03-29 102 views
10

我似乎无法弄清楚如何从内存中的位图加载一个pictureBox图像。是否有可能或者我必须为位图创建临时文件?从内存中加载Picturebox图像?

+1

可能的重复:http://stackoverflow.com/questions/743549 – dtb 2010-03-29 19:44:35

+0

你在内存中有位图吗? – SLaks 2010-03-29 19:49:05

+0

恰恰相反,从文件加载图像是非常不寻常的。使用Bitmap类。 – 2010-03-29 19:49:14

回答

20

什么格式存储的图像是?

如果你有一个实际的位图对象,只是把它分配给图片框,通过DTB的建议:

pictureBox.Image = bitmap; 

如果你有像一系列的流保存的字节,你需要从流加载图像:

var image = Image.FromStream(stream); 
pictureBox.Image = image; 

如果你不是有一个Windows GDI句柄的位图,使用

var image = Image.FromHbitmap(handle); 
pictureBox.Image = image; 

从本质上讲,当你没有告诉我们你所拥有的位图格式是什么格式时,很难用超过建议来回答你的问题。

+0

我收到'System.ArgumentException:参数无效.'异常,当我试图从流加载图像。 – 2017-03-04 12:13:02

+0

@BalagurunathanMarimuthu我建议发布自己的问题以获得有关您特定环境的帮助;很少有信息帮助。 – Bevan 2017-03-07 18:07:40

2
pictureBox.Image = bitmap; 
+0

参数缺少这里'暗淡图象作为字节()= GetBytes会(ListView2.Items(指数).SubItems(8)。文本) 昏暗转换器作为新ImageConverter() PictureBox1.Image = DirectCast(converter.ConvertFrom(图片) ,Image)' – 2015-12-27 21:51:16

4

您可以创建一个MemoryStream位图:

pictureBox.Image = new Bitmap(new MemoryStream(byteArray)); 
+0

什么时候可以安全地显式处理MemoryStream?会:使用(var ms = new MemorySteam(byteArray)){pictureBox.Image = new Bitmap(ms)};注意安全 ? – 2012-10-15 23:20:43

+0

@MoeSisko:你并不需要处理一个MemoryStream;他们没有不受管理的资源。 (只是一个'byte []')但是,是的;那应该没问题。 ()) – SLaks 2012-10-15 23:21:41

+0

参数缺失此处Dim图像As Byte()= GetBytes(ListView2.Items(index).SubItems(8).Text) Dim converter As New ImageConverter() PictureBox1.Image = DirectCast(converter.ConvertFrom(picture) ,图片)' – 2015-12-27 21:51:24