在我的数据库中,我以“图像”数据类型存储图像,显示为二进制代码。 我现在想从一列中检索所有图像并使用 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,然后再转换为图像?不过,我找不到有关如何执行此操作的示例。
最佳答案
应该这样做:
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
,但出于各种原因,请务必确保处理图像。
编辑:啊...我没有意识到这是针对 ASP.NET 的。这让事情变得更难了 - 因为 HTML 将包含 URL,然后您需要能够稍后获取数据。
图片是否有某种 ID?如果是这样,请获取该数据而不是实际数据,然后设置一个 URL,该 URL 能够根据 ID 提供任何缩略图(通过从数据库中获取它并使用适当的内容类型提供它)。
关于c# - 使用 Linq to SQL 从数据库中检索图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1266223/