【发布时间】:2010-09-08 08:09:37
【问题描述】:
有没有一种无需将整个文件读入内存即可查看图像格式的好方法?
显然,这会因格式而异(我对 TIFF 文件特别感兴趣),但哪种程序有助于确定文件的图像格式而无需通读整个文件?
奖励:如果图像是 Base64 编码的字符串怎么办?在解码之前有什么可靠的推断方法吗?
【问题讨论】:
有没有一种无需将整个文件读入内存即可查看图像格式的好方法?
显然,这会因格式而异(我对 TIFF 文件特别感兴趣),但哪种程序有助于确定文件的图像格式而无需通读整个文件?
奖励:如果图像是 Base64 编码的字符串怎么办?在解码之前有什么可靠的推断方法吗?
【问题讨论】:
当然有。就像其他人提到的那样,大多数图像都以某种“魔术”开头,它总是会转换为某种 Base64 数据。以下是几个例子:
位图将以Qk3开头
Jpeg 将以 /9j/ 开头
GIF 将以 R0l 开头(第二个字符是零)。
等等。获取不同的图像类型并找出它们编码的内容并不难。请小心,因为有些魔法不止一种,所以您需要在您的 B64“翻译代码”中说明它们。
【讨论】:
TIFF 将以 II 或 MM(英特尔字节排序或摩托罗拉)开头。
TIFF 6 规范可以在here 下载,并且不难理解
【讨论】:
在 *nix 命令行上的 file 或读取文件的初始字节。大多数文件在前几个字节中都有一个唯一的标题。例如,TIFF 的标头看起来像这样:
0x00000000: 4949 2a00 0800 0000有关 TIFF 文件格式的更多信息,特别是如果您想知道这些字节代表什么,请转到 here。
【讨论】:
大多数图像文件格式的开头都有唯一的字节。 unix file 命令查看文件的开头以查看它包含的数据类型。请参阅有关 Magic numbers in files 和 magicdb.org 的维基百科文章。
【讨论】: