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

Asp.net 在数据库中保存图像时获取图像高度和宽度,asp.net,sql,sql-server,vb.net,Asp.net,Sql,Sql Server,Vb.net,我使用ASP.NET2.0将图像保存到SQL Server数据库中 imageData->image imageType->varchar imageLength->bigint 因此,imageData将是二进制数据,imageType将类似于image/gif,imageLength将类似于6458 是否可以从ASP.NET中的VB.NET代码中获取图像的高度和宽度? 我想让我的网页上的图片框成为数据库中保存的实际图像的大小 问候 Etienne听起来您希望数据库中还有两个字段:高度和宽度。

我使用ASP.NET2.0将图像保存到SQL Server数据库中

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

因此,imageData将是二进制数据,imageType将类似于image/gif,imageLength将类似于6458

是否可以从ASP.NET中的VB.NET代码中获取图像的高度和宽度? 我想让我的网页上的图片框成为数据库中保存的实际图像的大小

问候
Etienne

听起来您希望数据库中还有两个字段:高度和宽度。

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


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

假设您在流中有数据:

System.Drawing.Image.FromStream YourStream.Height

在将图像保存到数据库时,这样做可能会更好,因为我确信加载图像对象不会很便宜

编辑 如果我们通过电子邮件发送,那么下一个有这个问题的人就不会有我们解决方案的记录。让我们暂时把它放在论坛上

正如我们所知,我是一名C开发人员,所以我不会尝试记住vb.net语法,如果这是一个问题,并且您需要帮助,请告诉我

我假设你有一个IDataReader,它正在从数据库中提取一个图像或二进制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

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


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

我坚信,经过数百GB的图像后,您会发现文件系统和静态文件http服务器比数据库更适合存储图像。它还允许您使用数千个现有的免费工具来处理、移动、托管图像等。您的数据库可能会很忙,而且不容易进行群集。

当然,如果重建图像,图像上会有高度和宽度属性。我想我不是这样想的。
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