2012-03-21 74 views
0

我已将图像作为BLOB(Varbinary(max))存储在数据库中。我将图像编码为.NET Bitmap TIFF。在页面上显示图像时,我可以将内容类型设置为JPEG,GIF等,并且图像始终在网页上正确显示。如果将内容类型设置为TIFF(因为它被编码为TIF),我希望图像只能正确显示。我正在使用Bitmap类。我错过了什么吗?.NET位图对象

下面是一些代码:

objCmd.CommandText = "SELECT Img FROM dbImage where id = 1 
       dr = objCmd.ExecuteReader 
       dr.Read() 

       screenshot = CType(dr("screenshot"), Byte()) 
       Response.ContentType = "image/tiff" 
       Response.BinaryWrite(screenshot) 
       Response.Flush() 
       Response.End() 

的BLOB图像编码为TIFF。但是,提取图像时,它将以JPG和GIF显示。例如,如果我将response.contenttype更改为“image/jpg”,则它仍然显示。问题是:它为什么仍然显示?我没有很多图像处理经验。

+0

您是否试图通过设置Content-Type标头来重新编码图像?或者只是想知道为什么设置它不会破坏你的浏览器? – 2012-03-21 21:09:11

+0

@Boo,谢谢。是的,我设置了内容类型,然后使用BinaryWrite显示图像(仅用于测试 - 实时系统将具有ASHX图像处理程序)。 – w0051977 2012-03-21 21:39:43

+0

那么,如果有问题,我问你的“是”是指什么? – 2012-03-21 22:26:10

回答

0

它仍然显示的原因是因为现代浏览器忽略图像的内容类型标题(基于观察和测试,而不是文档)。几乎每个图像的前几个字节都会告诉你它是什么格式 - 我假设浏览器(以及它们使用的图形库)会查看这些字节(就像.NET一样),而不是依赖内容类型标题。

网络服务器不会重新编码图像

+0

谢谢。在结束这个问题之前还有一件事。我认为TIFF图像不会显示在网页浏览器中(我正在使用IE8和Windows 7)。但是,我已经存储在数据库中的TIFF图像在IE8和Firefox中完美显示。另一位用户表示,他们的测试证明有时会出现TIFF图像,有时他们不会。是这样吗? – w0051977 2012-03-22 14:32:10

+0

自IE7以来,我还没有尝试在浏览器中显示TIFF(例如,太早以前我不记得这些调查的结果)。网络上的公约规定您限制用户必须下载的数据量。它对他们来说便宜,而且对你而言更便宜。所以我坚持使用Jpg,Png,并在极少数情况下使用Gif。 – 2012-03-22 18:32:44