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