有没有办法在不读取整个文件的情况下推断文件的图像格式?

StackOverflow https://stackoverflow.com/questions/52739

  •  09-06-2019
  •  | 
  •  

有没有一种好方法可以查看图像的格式,而无需将整个文件读入内存?

显然,这会因格式的不同而有所不同(我对 TIFF 文件特别感兴趣),但是什么样的过程有助于确定文件的图像格式而无需读取整个文件?

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

有帮助吗?

解决方案

大多数图像文件格式在开头都有唯一的字节。Unix file 命令查看文件的开头以查看它包含的数据类型。请参阅维基百科文章 文件中的幻数magicdb.org.

其他提示

当然有。就像其他人提到的那样,大多数图像都以某种“魔法”开始,它总是会转换为某种 Base64 数据。以下是几个示例:

位图将以 Qk3

Jpeg 将以 /9j/

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

等等。获取不同的图像类型并找出它们编码的内容并不难。请小心,因为有些拥有不止一件魔法,因此您需要在 B64“翻译代码”中考虑它们。

任何一个 file 在 *nix 命令行上或读取文件的初始字节。大多数文件的前几个字节都有一个唯一的标头。例如,TIFF 的标​​头如下所示:

0x00000000: 4949 2a00 0800 0000
有关 TIFF 文件格式的更多信息,特别是如果您想知道这些字节代表什么,请访问 这里.

文件格式的综合站点位于:

http://www.wotsit.org

TIFF 将以 II 或 MM(Intel 字节排序或 Motorolla)开头。
可以下载 TIFF 6 规范 这里 并且不太难遵循

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top