接上一篇JPEG压缩数据格式,本篇文章通过分析实例图片来理解学习文件格式。
图片实例一、
通过16进制打开图片一,如下图所示,所有的标记和标记段已标出。
依次解析这些字段:
①、SOI:独立标记,标识图像开始;
②、APP0:预留的APP数据,APP0一般为交换格式和图像识别信息。
00 10 => APP0段长度等于16字节
4A 46 49 46 00 =>ASCII码"JFIF",包含一个空字符
01 01 =>主版本号01,次版本号01
00 =>像素密度单位; 0=无单位;1=点数/英寸;2=点数/厘米
00 01 => 水平方向密度
00 01 => 垂直方向密度
00 00 => 缩略图水平像素数目 缩略图垂直像素数目
③、DQT:定义量化表
00 43 => DQT段长度是67字节
00 => 量化表精度是8Bit,标号0量化表
08 ~ 33 => 这64字节为标号0的量化表数据
④、DQT:定义量化表
00 43 => DQT段长度是67字节
01 => 量化表精度是8Bit,标号1量化表
09 ~ 33 => 这64字节为标号1的量化表数据
⑤、SOF0:表示使用Baseline DCT变化、霍夫曼编码
00 11 => 本段长度是17字节
08 => 采样精度是8bit
01 B9 => 图像高度为441像素
01 66 => 图像宽带为358像素
03 => 图像包含三个分量,为YCbCr图像 (1=灰度图,3=YCbCr/YIQ 彩色图,4=CMYK 彩色图)
01 22 00 => Y分量的水平采样因子=2,垂直采样因子=2,使用标号0的量化表
02 11 01 => Cb分量的水平采样因子=1,垂直采样因子=1,使用标号1的量化表
03 11 01 => Cr分量的水平采样因子=1,垂直采样因子=1,使用标号1的量化表l
⑥、DHT:定义霍夫曼编码表
00 1F => 本段长度为31字节
00 => DC表,标号0
00 01 05 01 01 01 01 01 01 00 00 00 00 00 00 00 => 表示16种霍夫曼码的每种数量,可以累加这16个数=12
00 01 02 03 04 05 06 07 08 09 0A 0B => 这12个数表示每种霍夫曼关联的值
⑦、DHT:定义霍夫曼编码表
00 B5 => 本段长度为181字节
10 => 交流表,标号0
00 02 01 03 03 02 04 03 05 05 04 04 00 00 01 7D => 表示16种霍夫曼码的每种数量,可以累加这16个数=162
01 02 03 ... F8 F9 FA => 这162个数表示每种霍夫曼关联的值
⑧、DHT:定义霍夫曼表
00 1F => 本段长度为31字节
01 => DC表,标号1
00 03 01 01 01 01 01 01 01 01 01 00 00 00 00 00 => 表示16种霍夫曼码的每种数量,可以累加这16个数=12
00 01 02 03 04 05 06 07 08 09 0A 0B => 这12个数表示每种霍夫曼关联的值
⑨、DHT:定义霍夫曼编码表
00 B5 => 本段长度为181字节
11 => 交流表,标号1
00 02 01 02 04 04 03 04 07 05 04 04 00 01 02 77 => 表示16种霍夫曼码的每种数量,可以累加这16个数=162
00 1 02 ... F8 F9 FA => 这162个数表示每种霍夫曼关联的值
⑩、SOS:扫描数据开始
00 0C => SOS标记段长度是12字节
03 => 图像包含三个分量,为YCbCr图像 (1=灰度图,3=YCbCr/YIQ 彩色图,4=CMYK 彩色图),与SOF0中的字段相同
01 00 => 图像第一分量(Y),选择标号0的DC霍夫曼表和标号0的AC霍夫曼表
02 11 => 图像第二分量(Cb),选择标号1的DC霍夫曼表和标号1的AC霍夫曼表
03 11 => 图像第三分量(Cr),选择标号1的DC霍夫曼表和标号1的AC霍夫曼表
00 => 在Baseline DCT中,值为0
3F => 在Baseline DCT中,值为63
00 => 在Baseline DCT中,值为0
在SOS段之后紧跟着的就是图像编码数据,按照扫描行排列,数据以zig-zag顺序是从左到右、从上到下。
F7 FA 28 ... 56 65 73 => 图像编码数据
⑪、EOI:独立标记,标识图像结束;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)