有没有一种方法可以推断文件是什么图像格式,而无需读取整个文件?
时间: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"翻译代码"中加以说明。