词典

JFIF 版本是什么意思?

JFIF 意味着 JPEG File Interchange Format(JPEG 文件交换格式),也就是人们通常称为 JPEG 图片的文件格式。JFIF 版本显示文件遵循的是该格式的哪个版本。

jfif-version

JFIF 是 JPEG File Interchange Format(JPEG 文件交换格式) 的缩写,JPEG 则是 Joint Photographic Experts Group(联合图像专家组)的缩写。JFIF 是用来存储 JPEG 图像数据的文件格式,这样不同的程序和电脑都可以打开它。

JFIF 版本 是 JPEG 文件中的一个元数据字段。它告诉你这个文件遵循的是哪个 JFIF 规范版本,例如 1.01 或 1.02。你会在JPG 文件中看到这个字段,因为 JFIF 只适用于 JPEG 图像格式。

JFIF 为 JPEG 图像带来了什么

JPEG 标准定义了图像数据如何压缩。JFIF 文件是普通的 JPEG 文件,只是多了一个称为 APP0 段的数据块。这个数据块紧跟在开始图像的标记之后。

APP0 段中的数据以文本 JFIF 开头。这个数据段保存了压缩图像数据中不包含的信息:

  • JFIF 版本
  • 水平和垂直像素密度,以及以英寸、厘米或无单位为分辨率单位的设置
  • 像素纵横比,程序会根据这两个密度值计算出来
  • 一个可选的小图像预览,称为缩略图

JFIF 还规定了颜色模型。JFIF 图像要么只有 1 个表示亮度的通道,要么有 3 个位于 YCbCr 色彩空间中的通道。

哪些文件携带它

MIME 类型 image/jpeg 是为 JFIF 格式的 JPEG 图像定义的。扩展名 .jpg、.jpeg、.jpe、.jif 和 .jfif 都属于这种格式。所以,文件名以 .jfif 结尾的文件,和扩展名为 .jpg 的文件保存的是同一种图像。

数码相机通常会把 JPEG 照片保存为 Exif 格式。Exif 主要把元数据存储在 APP1 段中,而且这个数据段也必须紧跟在图像开始之后。由于这两个数据段都要求排在最前面,一个文件不可能同时完全遵循 JFIF 和 Exif。

有些程序仍然会在 Exif 段前面写入一个 JFIF 段。在这样的文件中,你会同时看到 JFIF 版本和Exif 版本。

数值的呈现方式

JFIF 版本占用 2 个字节。第一个字节保存主版本号,第二个字节保存次版本号。版本 1.02 在文件中会被存储为字节 01 和 02。

ExifTool 将这个字段显示为 JFIFVersion。它会输出主版本号、一个点和 2 位数字的次版本号。格式注册表中列出了 3 个 JFIF 版本:

  • 1.00:规范的早期版本
  • 1.01:1.02 之前的版本
  • 1.02:1992 年 9 月 1 日发布的版本

数值的来源

保存 JPEG 文件的程序会写入 APP0 段,并在其中保存版本号。ITU 在 2011 年将 JFIF 作为 T.871 建议书发布,ISO 和 IEC 则以 ISO/IEC 10918-5 的形式发布了相同的内容。这个标准基于 1.02 版本,符合该标准的文件必须存储值 1.02。

基于 libjpeg 库构建的程序默认会写入 1.01。它的文档说明,当程序添加来自 1.02 版本的扩展数据段时,应该将版本设置为 1.02。所以,现在保存的文件中可能会出现 1.01 或 1.02。

这对你的文件有何影响

版本信息会告诉程序自己能否读取 JFIF 数据。规范说明,只要文件的主版本号与程序支持的主版本号一致,通常就可以成功解码。

版本还决定文件可以包含哪种缩略图。名为 JFXX 的扩展数据段只允许在 1.02 及之后的版本中使用。JFXX 数据段可以保存使用 JPEG 压缩的缩略图,或未压缩的缩略图。

没有 JFIF 版本的 JPEG 文件就没有 JFIF 数据段。对于由相机以 Exif 格式保存的照片来说,这是正常情况。