有没有办法从数据库中的 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/