.net - 在不加载整个字段的情况下确定 blob 是否是图像?

标签 .net database binary-data

有没有办法从数据库中的 BLOB 类型字段中读取几个字节(对于这个问题,数据库品牌无关紧要)并确定二进制内容是否为图像(假设它是其中之一:JPG、GIF、PNG)?我有一个将文件存储在数据库中的网络应用程序,如果它是图像,我想显示缩略图,否则我想显示图标......但我没有为 blob 的其他任何地方存储任何 MIMETYPE 信息(这不是我的设计)...并且因为它是一个网络应用程序,所以图像的加载需要在单独的调用(getImage.ashx)中进行,而不是写出 标签......当我写出时我不想将整个 blob 读入库的标签,确定它是否是图像,调整它的大小......等等......我希望能够查看前几个字节并知道我是否需要写标签。我不太了解图像文件结构/格式,无法知道在前几个字节中是否有某种标准 header ,我可以读入这些 header 来判断它是 JPG、GIF 还是 PNG。

有道理吗?

如果您想具体帮助我(而不是笼统地回答是否可以完成),那么我正在使用 .NET C# 和 SQL 2005

谢谢!

最佳答案

PNG 开头为:89 50 4E 47 0D 0A 1A 0A ;见http://www.libpng.org/pub/png/spec/1.2/PNG-Structure.html

GIF 以 47 49 46 38 37 61 (GIF87a) 或 47 49 46 38 39 61 (GIF89a) 开头 ;见http://www.fileformat.info/format/gif/egff.htm

JPEG 以 FF D8 FF E0 xx xx 4A 46 49 46 00 开头(编辑:添加 header 的缺失部分;xx xx 是 header 长度,以字节为单位);见http://www.obrador.com/essentialjpeg/headerinfo.htm

引用:http://wangrui.wordpress.com/2007/06/19/file-signatures-table/

关于.net - 在不加载整个字段的情况下确定 blob 是否是图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1261106/

相关文章:

c# - Entity Framework 模型第一个导航属性添加无效的列名来查询?

.net - Azure Web 应用程序中的 SSL 握手重用

c# - WPF UI Automation with .NET 4.5 with Prism 和 MVVM with Click Once App 便于非开发人员使用

android - 哪个更快 : Writing SQLite database or In a Text File

mysql - 在 MYSQL 中执行 LEFT OUTER JOIN 时插入零而不是 NULL

clojure - 如何在Clojure中解析二进制文件

c# - 我可以使用 .net 检查电子邮件地址是否存在吗?

mysql - Mysql UUID_SHORT() 是否与 UUID() 相当

c# - 随机访问和 BinaryWriter?

c - 如何从文件中读取二进制数据,并通过 Ruby 套接字将其传输到执行按位运算的客户端?