【问题标题】:.NET Bitmap Object.NET 位图对象
【发布时间】:2012-03-21 17:46:01
【问题描述】:

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

这里有一些代码:

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”,那么它仍然会显示。问题是:为什么它仍然显示?我在图像处理方面没有太多经验。

【问题讨论】:

  • 您是否尝试通过设置 Content-Type 标头重新编码图像?或者只是想知道为什么设置它不会破坏您的浏览器?
  • @Boo,谢谢。是的,我正在设置内容类型,然后使用 BinaryWrite 显示图像(仅用于测试 - 实时系统将具有 ASHX 图像处理程序)。
  • 那么我问的问题是指你的“是”是指什么?
  • @boo,谢谢。我似乎没有将内容类型设置为 jpg、png 等,图像始终显示。它不会破坏浏览器。
  • 那么问题到底是什么?你想让它坏掉吗?

标签: .net image


【解决方案1】:

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

网络服务器没有重新编码图像

【讨论】:

  • 谢谢。在我结束这个问题之前还有一件事。我认为 TIFF 图像不会显示在网络浏览器中(我使用的是 IE8 和 Windows 7)。但是,我存储在数据库中的 TIFF 图像在 IE8 和 Firefox 中都可以完美显示。另一位用户说,他们的测试证明有时会出现 TIFF 图像,有时不会。是这样吗?
  • 自 IE7 以来,我没有尝试在浏览器中显示 TIFF(例如,太久以前我不记得这些调查的结果了)。网络上的约定说您限制了用户必须下载的数据量。它对他们来说更便宜,对你来说更便宜。所以坚持使用 Jpg、Png 和非常罕见的 Gif。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-04
  • 2011-02-25
  • 2011-09-11
  • 2011-02-13
  • 2011-08-05
相关资源
最近更新 更多