代码之家  ›  专栏  ›  技术社区  ›  Tom Kidd

在不读取整个文件的情况下,是否有方法推断文件的图像格式?

  •  11
  • Tom Kidd  · 技术社区  · 16 年前

    有没有一个好的方法来查看图像的格式,而不必将整个文件读取到内存中?

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

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

    5 回复  |  直到 12 年前
        1
  •  17
  •   Greg Hewgill    16 年前

    大多数图像文件格式在开始时都有唯一的字节。UNIX file 命令查看文件的开头,以查看它包含的数据类型。参见维基百科上的文章 Magic numbers in files magicdb.org .

        2
  •  4
  •   Kevin Panko Matthew Woodard    12 年前

    当然有。正如其他人提到的,大多数图像都是从某种“魔力”开始的,它总是转换成某种base64数据。以下是几个例子:

    位图将以 Qk3

    jpeg将以 /9j/

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

    等等。不难获取不同的图像类型并找出它们的编码方式。小心点,因为有些人有不止一个魔法,所以你需要在你的B64“翻译代码”中解释它们。

        3
  •  0
  •   verix    16 年前

    要么 file 在*nix命令行上或读取文件的初始字节。大多数文件在前几个字节中都有一个唯一的头文件。例如,tiff的头部如下所示:

    0x00000000: 4949 2a00 0800 0000
    有关TIFF文件格式的更多信息,特别是如果您想知道这些字节代表什么,请转到 here .
        4
  •  0
  •   Mark Ingram    16 年前

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

    http://www.wotsit.org

        5
  •  0
  •   hamishmcn    16 年前

    TIFF将以II或MM(Intel字节排序或Motorolla)开头。
    可以下载TIFF 6规范 here 也不难理解