参考链接:jpeg图片格式详解_460833359的博客-CSDN博客_jpg文件通常是什么
一、JPEG图像介绍
jpg/jpeg是24位的图像文件格式,也是一种高效率的压缩格式,文件格式是JPEG(联合图像专家组)标准的产物,是面向连续色调静止图像的一种压缩标准
二、winhex打开4*4的JPEG图像
三、JPEG文件头 2byte
FF D8 标识JPEG文件头
四、APP0图像识别信息
APP0 标识:FF E0
数据段长度标识:00 10 16byte(包含数据段长度标识2byte)
交换格式:4A 46 49 46 00,对应ASCII "JFIF"
主版本号:01 次版本号:01 版本号:1.1
密度单位:01 对应单位 点数/英寸
X方向像素密度:00 60
Y方向像素密度:00 60
缩略图水平像素数目:00
缩略图垂直像素数目:00
五、APP1 -------> APPN (N=1~15)
含义:应用程序保留标记x
标记码:0xFFE1~0xFF..(手机照片通常包含APP1,内容由地点,时间等)
解析APP0同上(我们这里使用JPEG没有APP0,略过)
六、DQT定义量化表
备注:JPEG文件一般有2个DQT段,为Y值(亮度)定义1个, 为C值(色度)定义1个
DQT标识:FF DB
数据长度:00 43 (段长度2个字节,QT信息1个字节)+QT量化表的长度,此处QT量化表的长度是64)
QT信息:00 QT号为0 QT精度8bit
QT量化表:这个长度是根据QT信息确定的,上面QT精度为8bit,所以此处是64×1byte = 64byte
七、SOF0图像基本信息(帧图像起始块)

标记码:FF C2(JPG) FF C0(JPEG)
数据段长度:00 11 =》17 = 8 + 3*3,说明组件数量有3个
样本精度:08,每个样本的信息是8bit
样本高度:00 04 样本宽度:00 04 图像宽高4*4
组件数量:03 代表YCbCr 彩色图,有3个组件分别是Y、Cb、Cr
组件id+采样系数+量化表号(3组):
01 22 00 => Y组件,垂直采样系数和水平采样系数都是2,量化表号是0
02 11 01 => Cb组件,垂直采样系数和水平采样系数都是1,量化表号是1
03 11 01 => Cr组件,垂直采样系数和水平采样系数都是1,量化表号是1
此处可知此处Y采样是逐点采样,CbCr都是隔点采样,这就是标准的YUV422的数据
八、DHT定义huffman表
Huffman表标识:FF C4
段长度: 00 15 ==>1F 31(段长度2个字节+HT信息1个字节+HT位表16个字节) + 12(这个数代表HT表有3个字节)
00 ==> HT号是0,DC表
HT表 ==> 00 01 05 01 01 01 01 01 01 00 00 00 00 00 00 00 => 共16个字节,加起来是12(此处和段长度是相匹配的),说明HT表有12个字节
HT值表:00 01 02 03 04 05 06 07 08 09 0A 0B
九、SOS扫描行开始
SOS扫描开始标识:FF DA
SOS扫描块长度:00 0C => 12 = (2个字节的扫描行开始头+1个字节扫描行内组件数量)+ 2×3(扫描行内组件数量,每个组件2个字节)+(3个字节的剩余位)
03 => 代表组件数量数3
01 00 => Y组件,AC表号是0,DC表号是0
02 11 => Cb组件,AC表号是1,DC表号是1
03 11 => Cr组件,AC表号是1,DC表号是1
十、EOI文件尾