有没有一种很好的方法可以查看图像的格式,而无需将整个文件读入内存?
显然这会因格式而异(我对TIFF文件特别感兴趣)但是什么样的过程对于确定文件的图像格式是否有用而无需读取整个文件?
BONUS :如果图片是Base64编码的字符串怎么办?在解码之前有任何可靠的推断方法吗?
答案 0 :(得分:17)
大多数图像文件格式在开始时都有唯一的字节。 unix file
命令查看文件的开头以查看它包含的数据类型。请参阅Magic numbers in files和magicdb.org上的维基百科文章。
答案 1 :(得分:4)
当然有。就像其他人提到的那样,大多数图像都是从某种“魔术”开始的,它总会转化为某种Base64数据。以下是几个例子:
位图将以Qk3
Jpeg将以/9j/
GIF将以R0l
开头(第二个字符为零)。
等等。获取不同的图像类型并找出它们编码的内容并不难。请注意,因为有些魔法有一个以上,所以你需要在你的B64'翻译代码'中考虑它们。
答案 2 :(得分:0)
* nix命令行上的file
或读取文件的初始字节。大多数文件在前几个字节中都带有唯一的标头。例如,TIFF的标题如下所示:
0x00000000: 4949 2a00 0800 0000有关TIFF文件格式的更多信息,如果您想知道这些字节代表什么,请转到here。
答案 3 :(得分:0)
文件格式的综合网站位于:
答案 4 :(得分:0)
TIFF将以II或MM(英特尔字节顺序或Motorolla)开头 TIFF 6规范可以下载here,并且不难理解