JPEG文件字段

发布时间 2023-04-24 20:34:25作者: 梁君牧

JPEG文件字段

JPEG编解码

目前有较多的图像编码标准,如jpeg、bmp、gif、png、webp、heif,我们这里先说jpeg部分,这个编解码标准诞生于20世纪90年代,JPEG标准仅仅说明定义了codec部分,也就是图片如何压缩为字节流以及重新解码为图片的过程,标准没有涉及到文件的存储格式。

1992年颁布了JPEG File Interchange Format(JFIF),目前在互联网上用的最多的jpeg格式,接着又出现了EXIF格式,主要用于数码产品,记录了媒体的时间地点信息。

JPEG文件由一系列字段组成,每个字段都有marker(标记),由0xff开头。

img

图4 jpeg字段

(1)SOF marker(Start of Frame),这个字段定义了文件的起始

img

图5 SOF字段

(2)APP0(Application-specific),这个字段定义了JFIF格式

img

图6 APP0字段(定义JFIF格式)

(3)APPn(Application-specific),定义了其它格式,如APP1表示exif格式

img

图7 定义APPn字段

(4)DQT(Define Quantization Table(s)),定义了量化表

img

图8 字义量化表字段

下面以jpeg图的二进制数据来分析,通过vim打开后(:%!xxd切换到十六进制),ffd8表示start of image,ffe0表示app0,即是JFIF格式,0043前面的ffdb表示量化表(两个ffdb分别表示亮度和色度分量的量化表),0043表示量化表65字节(64byte量化参数 + 1 byte精度及量化表ID),ffc0表示start of frame,即图像数据

img

图9 jpeg字段分析