编码过程是把图片转换为压缩图像数据的方法。在元数据报告中,Encoding Process 表示一个 JPG 文件使用的这种方法,例如 Baseline DCT, Huffman coding。
这个值由两部分组成。第一部分表示图片数据是如何被压缩的。第二部分表示结果是如何打包成比特的。
哪些文件携带它
Encoding Process 是一个 JPEG 字段,每个 JPEG 图像都有它。JPEG 标准把这条信息放在一个位于压缩图片数据之前的简短头部里。
数值的来源
没有相机或程序会把 Encoding Process 写成单独的标签。ExifTool 之类的读取程序会从打开该头部的帧开始标记 (Start of Frame) 中推算出这个值。JPEG 标准为每种编码过程定义了不同的标记。
同一个头部还存储了图像的宽度和高度、每样本比特数,以及颜色分量的数量。ExifTool 也会从这个头部推算色度抽样。
由于这个值描述的是图像数据如何存储,你不能像普通标签那样编辑它。只有当程序使用其他设置重新保存图片时,Encoding Process 才会改变。
数值的呈现方式
ExifTool 会显示 13 个值之一。美国国会图书馆指出,常见的有 baseline 和 progressive。
Baseline DCT, Huffman codingExtended sequential DCT, Huffman codingProgressive DCT, Huffman codingLossless, Huffman codingSequential DCT, differential Huffman codingProgressive DCT, differential Huffman codingLossless, Differential Huffman codingExtended sequential DCT, arithmetic codingProgressive DCT, arithmetic codingLossless, arithmetic codingSequential DCT, differential arithmetic codingProgressive DCT, differential arithmetic codingLossless, differential arithmetic coding
数值中每一部分的含义
DCT是离散余弦变换 (discrete cosine transform) 的缩写。基于 DCT 的 JPEG 处理是有损的:它会丢弃部分细节来减小文件大小。Baseline是基本的 DCT 过程。它使用每样本 8 比特和 Huffman 编码。Sequential意味着每个颜色分量只存储在一次扫描中。Extended sequential的工作方式类似 baseline,但它还允许每样本 12 比特和算术编码。Progressive会把图片存储为多次扫描。每次扫描通常都会提高画质,因此查看器可以先显示一张粗略的图片,然后再逐步变清晰。Lossless不使用 DCT。解码后的图片与原始图片完全相同。differential属于分级模式。在这里,每一帧只存储与前一帧的差异。Huffman coding和arithmetic coding是两种无损的方法,用来把数据打包成更少的比特。
这对你的文件有何影响
JPEG 标准不要求每个程序都支持所有处理方式。每个 DCT 解码器都必须支持 baseline,因此当图片需要在任何地方都能打开时,baseline 文件是更安全的选择。
其他处理方式在某些程序中可能无法打开。根据美国国会图书馆的说法,最初的无损处理方式在应用中并未得到广泛支持。一种使用 Huffman 编码的无损变体被用于 Adobe DNG 原始格式的 1.1 版本。
带有 DCT 的值说明图片在保存时丢失了一些细节。再次保存文件不会恢复这些细节。这个字段只描述图片是如何存储的,不包含任何个人信息。