是什么导致两种主要的 JPEG 文件格式 JFIF 和 Exif 不兼容?

是什么导致两种主要的 JPEG 文件格式 JFIF 和 Exif 不兼容?

JPEG 不是一种文件格式。两种主要格式是 JFIF 和 Exif。维基百科页面日语FIF说:

JFIF 与较新的可交换图像文件格式 (Exif) 互相不兼容。

虽然这两种格式非常相似,但是什么原因导致不兼容?

答案1

如果您希望 100% 符合规范,JFIF 和 Exif 是不兼容的。实际上,它们可以混合在一个文件中。这是因为不兼容是由两个规范中的一个细节引起的,如果您将它们混合在一起,那么这个细节并不重要。

两种格式的文件具有相同的结构:

  1. 图像标记的开始:FF D8
  2. 任意数量的段:
    • 2字节段类型标识符
    • 2 字节段长度(不包括标识符字节)
    • 分段数据
  3. 扫描标记开始:FF DA
  4. 图像数据
  5. 图像结束标记:FF D9

两种格式的图像数据相同。段类型、其标识符和内容结构在很大程度上是相同的。其他段对于其中一种格式是唯一的,不使用另一种格式的标识符,因此也不存在不兼容问题。问题是 JFIF 要求文件中的第一个段为FF E0,而 Exif 要求FF E1。因此,如果文件符合其中一种规范,它就会自动不符合另一种规范。

我已经有一段时间没有玩 JPEG 了,但上次我检查时发现,我检查过的所有使用 JPEG 的软件都只是忽略了它无法识别的片段。因此,如果某个程序(例如)假设某个文件是 Exif,因为它以一个FF E1片段开头,它要么仍然读取并识别FF E0(不是很有用,因为它会重复来自 的信息),要么跳过它。如果程序无法识别FF E1所有片段,则应根据规范忽略它们。FF Ex

相关内容