有没有一种方法可以推断文件是什么图像格式,而无需读取整个文件?

时间:2020-03-05 18:50:18  来源:igfitidea点击:

是否有一个很好的方法可以查看图像的格式,而不必将整个文件读入内存?

显然,格式会有所不同(我对TIFF文件特别感兴趣),但是哪种类型的过程对于确定文件的图像格式是有用的,而不必阅读整个文件?

BONUS:如果图像是Base64编码的字符串怎么办?在解码之前有可靠的推断方法吗?

解决方案

回答

大多数图像文件格式的开头都有唯一的字节。 unixfile命令查看文件的开头,以查看文件包含什么类型的数据。请参阅Wikipedia上有关文件中的幻数和magicdb.org的文章。

回答

  • nix命令行上的file或者读取文件的初始字节。大多数文件在前几个字节中都有一个唯一的标头。例如,TIFF的标题看起来像这样:
0x00000000: 4949 2a00 0800 0000

有关TIFF文件格式的详细信息,特别是如果我们想知道这些字节代表什么,请转到此处。

回答

可以在以下位置找到文件格式的综合站点:

http://www.wotsit.org

回答

TIFF将以II或者MM(Intel字节顺序或者Motorolla)开头。
TIFF 6规范可在此处下载,并不难遵循

回答

当然可以。就像其他人提到的那样,大多数图像都以某种"魔术"开头,这些魔术总是转换为某种Base64数据。以下是几个示例:

位图将以" Qk3"开头

一个Jpeg将以/ 9j /开头

GIF将以" R0l"开头(第二个字符为零)。

等等。提取不同的图像类型并找出它们要编码的内容并不难。请小心,因为有些魔术不只一种,因此我们需要在B64"翻译代码"中加以说明。