在我的数据库中,我将图像存储在“图像”数据类型中,显示为二进制代码。 我现在想从一列中检索所有图像,并使用C#将它们显示在asp.net页面上。
databaseDataContext db = new databaseDataContext();
var images = from Picture p in db.Pictures
select p.pictureThumb;
然后我用它:
foreach (Picture p in images)
{
galleryImages.Controls.Add(p);
}
但这不起作用,因为Binary无法转换为Picture。我用谷歌搜索了这个,发现我必须转向Byte然后成像?我找不到如何做到这一点的例子。
答案 0 :(得分:12)
这应该这样做:
databaseDataContext db = new databaseDataContext();
var images = from p in db.Pictures
select Image.FromStream(new MemoryStream(p.pictureThumb.ToArray());
foreach (Image image in images)
{
galleryImages.Controls.Add(image);
}
请注意,Image.FromStream
取得了流的所有权 - 无论如何它只是MemoryStream
,但请确保您出于各种原因处置图像。
图片是否有某种ID?如果是这样,请获取该数据而不是实际数据,然后设置一个能够根据ID提供任何缩略图的URL(通过从数据库中提取并仅使用适当的内容类型提供)。