有没有一种好方法可以查看图像的格式,而无需将整个文件读入内存?
显然,这会因格式而异(我对 TIFF 文件特别感兴趣),但是哪种程序有助于确定文件是哪种图像格式而无需通读整个文件?
奖励:如果图像是 Base64 编码的字符串怎么办?在解码之前有什么可靠的方法来推断它吗?
大多数图像文件格式在开始时都有唯一的字节。unixfile
命令查看文件的开头以查看它包含什么类型的数据。请参阅有关文件和magicdb.org中的幻数的 Wikipedia 文章。
当然有。就像其他人提到的那样,大多数图像都以某种“魔术”开头,它总是会转换为某种 Base64 数据。以下是几个例子:
位图将以Qk3
Jpeg 将以/9j/
GIF 将以R0l
(第二个字符为零)开头。
等等。获取不同的图像类型并找出它们编码的内容并不难。只是要小心,因为有些魔法不止一种,所以你需要在你的 B64 '翻译代码'中说明它们。
在 * nixfile
命令行上或读取文件的初始字节。大多数文件在前几个字节中都有一个唯一的标题。例如,TIFF 的标头看起来像这样:
0x00000000: 4949 2a00 0800 0000有关 TIFF 文件格式的更多信息,特别是如果您想知道这些字节代表什么,请转到此处。
TIFF 将以 II 或 MM(Intel 字节排序或 Motorolla)开头。
TIFF 6 规范可在此处下载,并不难遵循