将图像保存在数据库中时获取图像高度和宽度

时间:2009-03-19 16:52:54

标签: asp.net sql sql-server vb.net

我使用ASP.NET(2.0)将图像保存到SQL Server数据库中。

(imageData - > image)(imageType - > varchar)(imageLength - > bigint)

因此imageData将是“二进制数据”,imageType将像“image / gif”,imageLength将像“6458”.......

是否可以从我的ASP.NET中的VB.NET代码中获取图像HEIGHT和WIDTH? 我想在我的网页上将我的图片框设置为我数据库中保存的实际图像的大小。

此致 艾蒂安

6 个答案:

答案 0 :(得分:9)

假设您有数据流:

System.Drawing.Image.FromStream(yourStream).Height

当您将图像保存到数据库时,最好这样做,因为我确信加载图像对象并不便宜。

修改

如果我们将此信息通过电子邮件发送,则下一个有此问题的人将无法获得我们解决方案的记录。我们暂时将其保留在论坛中。

我们知道,我是一名C#开发人员,所以如果这是一个问题,我不打算尝试记住vb.net语法,你需要帮助转换让我知道。

你有一个IDataReader我假设从你的数据库中提取一个Image或二进制varbinary等字段。您需要将其加载到派生自System.IO.Stream的对象中。出于我们的目的,MemoryStream是完美的选择,因为它不需要诸如磁盘的后备存储。

System.IO.MemoryStream yourStream = new System.IO.MemoryStream(dr["imgLength"] as byte[]);
System.Drawing.Image yourImage=System.Drawing.Image.FromStream(yourStream);

yourImage.Height;
yourImage.width

答案 1 :(得分:2)

当您将图像初始保存到数据库时,我会将图像的高度和宽度保存在单独的列中。然后,当您执行select语句以从数据库中读取图像时,您还可以从数据库中访问高度和宽度字段。

或者,您可以在将图像加载到数据库之外时访问高度和宽度信息,然后在将图像分配到图片框之前设置高度和宽度属性。

答案 2 :(得分:2)

您可以获得高度和宽度,但每次需要该信息时,您都必须使用system.drawing.image库将整个图像加载到内存中。

最好在第一次将其保存到数据库时将其另存为单独的字段,这通常就是我所做的。

答案 3 :(得分:0)

听起来你想要在数据库中增加2个字段,高度和宽度。

答案 4 :(得分:0)

我坚信,在几百GB的图像之后,您会发现自己认为文件系统和静态文件http服务器比用于存储图像的数据库更适合。它还允许您使用数千种现有的免费工具来处理,移动,托管等图像。您的数据库可能会很忙,集群也不容易。

答案 5 :(得分:0)

Dim mobj_wc As New System.Net.WebClient
Dim obj_BookOriginalImage As System.Drawing.Bitmap
Dim ImageInBytes() As Byte = mobj_wc.DownloadData(mstr_BookURL & mds_BookDetails.Tables(0).Rows(0).Item("BookImage"))

'CREATE A MEMORY STREAM USING THE BYTES
Dim ImageStream As New IO.MemoryStream(ImageInBytes)
obj_BookOriginalImage = New System.Drawing.Bitmap(ImageStream)
mint_ImageWidth = obj_BookOriginalImage.Width