繁体   English   中英

如何从SQL Server检索图像的宽度和高度属性?

[英]How to retrieve width and height properties of an image from SQL Server?

我正在使用这种方法从SQL Server检索图像以显示在ASP.NET 4.0应用程序的新页面上(我的一篇文章):

如何在GridView中显示基于SelectedValue的图像?

然后,我使用以下方法在新窗口中显示图像:(我的一篇文章):

如何在新窗口中显示图像

我想做的是获取图像的高度和宽度,以便以与存储的图像相同的高度和宽度创建新窗口。 我猜有两种方法可以做到这一点:

  1. 在数据库中创建一个height和width列,并在将图像插入数据库时​​存储值
  2. 从数据库中检索图像,并在显示图像之前以某种方式计算高度和宽度,然后将浏览器窗口调整为合适的大小。

我的数据库中已经有150多个图像,因此使选项1变得很困难,因为我必须回到数据库中并为数据库中已经存在的图像计算高度和宽度。 因此,我宁愿使用选项2,还是有另一个选项? 我将如何去做呢?

感谢您的光临。

就像是:

System.Drawing.Image image = System.Drawing.Image.FromStream( 
    new System.IO.MemoryStream((byte[]) SqlReader["img_data"]) 
);

int width = image.Width;
int height = image.Height;

从长远来看,编写一个小程序以从数据库中获取所有图像比在需要显示图像的页面的每个请求上解析图像数据要长得多。 请记住,页面本身通常根本不需要加载图像数据,只需包含对其的引用即可。 此外,即使是对实际图像的请求,通常也只需从数据库中获取Blob,然后将其返回给客户端,而无需进行任何潜在的内部加载。

大约需要20分钟的时间编写一些代码,以字节数组的形式依次获取每个图像,将其加载到Bitmap(Stream)构造函数中(使用MemoryStream封装字节数组),询问位图的尺寸,然后将其写入数据库。

这20分钟的工作将使您不必为每次要显示页面的页面上要显示的每个图像加载图像数据。 无论如何,您仍然需要编写代码以从数据中加载图像-但是它的发生频率会更高,而且有时您确实不希望这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM