JEPG图像文件结构

JPEG(Joint Photographic Experts Group)是一种广泛使用的有损压缩图像格式,其文件结构遵循特定的规范。JPEG 文件通常以 .jpg.jpeg 为扩展名。其内部结构基于 标记(Markers)段(Segments) 的组合。


一、基本结构概述

JPEG 文件由一系列 标记段(Marker Segments) 构成,每个标记段以一个 两字节的标记(Marker) 开头,格式为 0xFF + 标记码(例如 0xFFD8 表示 SOI)。

主要组成部分:

  1. SOI(Start of Image)

    • 标记:0xFFD8
    • 表示 JPEG 图像的开始。
  2. APPn 段(Application-specific segments)

    • 标记:0xFFE00xFFEF(如 0xFFE0 是 APP0,常用于 JFIF 信息;0xFFE1 常用于 EXIF 数据)
    • 存放应用程序自定义数据,比如:
      • JFIF(JPEG File Interchange Format)头
      • EXIF(Exchangeable Image File Format)元数据(拍摄时间、相机型号、GPS 等)
  3. DQT(Define Quantization Table)

    • 标记:0xFFDB
    • 定义量化表,用于解码时反量化 DCT 系数。
  4. SOF(Start of Frame)

    • 标记:常见如 0xFFC0(Baseline DCT)、0xFFC2(Progressive DCT)等
    • 描述图像的基本参数,如:
      • 图像高度、宽度
      • 颜色分量数量(通常是 3:Y, Cb, Cr)
      • 每个分量的采样因子(如 4:2:0)
      • 每个分量使用的量化表编号
  5. DHT(Define Huffman Table)

    • 标记:0xFFC4
    • 定义霍夫曼编码表,用于熵解码。
  6. SOS(Start of Scan)

    • 标记:0xFFDA
    • 表示压缩图像数据的开始。
    • 包含:
      • 使用的分量列表
      • 对应的霍夫曼表编号
    • 之后就是实际的压缩图像数据(熵编码后的 DCT 系数)
  7. 压缩图像数据(Entropy-coded data)

    • 不以标记开头,但若出现 0xFF,后面会跟一个填充字节 0x00(称为 stuffing byte),避免误判为标记。
  8. EOI(End of Image)

    • 标记:0xFFD9
    • 表示 JPEG 图像结束。

二、典型 JPEG 文件结构顺序(Baseline JPEG)

复制代码
+------------------+
| SOI (0xFFD8)     |
+------------------+
| APP0 / APP1 ...  | ← 可选,包含 JFIF/EXIF 等
+------------------+
| DQT              | ← 一个或多个量化表
+------------------+
| SOF0 (0xFFC0)    | ← 基线 JPEG 的帧头
+------------------+
| DHT              | ← 一个或多个霍夫曼表
+------------------+
| SOS (0xFFDA)     |
+------------------+
| 压缩图像数据      | ← 可能包含 0xFF00 转义
+------------------+
| EOI (0xFFD9)     |
+------------------+

注意:某些 JPEG(如渐进式 JPEG)可能包含多个 SOS 段和多个扫描。


三、关键点说明

  • 所有标记都是大端序(Big-endian)

  • 标记长度字段 :除 SOI、EOI 和压缩数据外,大多数段在标记后紧跟一个 2 字节的长度字段 (包括长度字段本身),例如:

    复制代码
    FF C0 00 11 ...
          ↑↑------ 长度 = 0x0011 = 17 字节(包括这2字节)
  • 颜色空间 :JPEG 内部使用 YCbCr 色彩空间(即使原始图像是 RGB),通过色彩空间转换和子采样实现压缩。


四、示例:用十六进制查看 JPEG 头部

hex 复制代码
FF D8 FF E0 00 10 4A 46 49 46 00 01 01 01 00 48  ← SOI + APP0(JFIF)
00 48 00 00 FF DB 00 43 00 01 01 01 01 01 01 01  ← DQT
...
FF C0 00 11 08 02 80 01 E0 03 01 22 00 02 11 01  ← SOF0 (640x480)
...
FF DA 00 0C 03 01 00 02 11 03 11 00 3F 00 ...     ← SOS + 压缩数据
...
FF D9                                            ← EOI

五、参考资料

  • ISO/IEC 10918-1(ITU-T T.81):JPEG 标准文档
  • JPEG File Interchange Format (JFIF) specification
  • EXIF specification(由 JEITA 制定)

如需解析或生成 JPEG 文件,建议使用成熟的库(如 libjpeg、Pillow、OpenCV),因为手动处理霍夫曼编码、DCT 反变换等非常复杂。

如果你对某一部分(如 DHT 结构、SOS 后的数据流格式)感兴趣,我可以进一步展开说明。

相关推荐
还是大剑师兰特4 小时前
GIF图像文件结构
大剑师·gif图像结构
还是大剑师兰特1 天前
PNG图像文件结构
服务器·大剑师·png结构
还是大剑师兰特2 天前
单兵作战需要哪些计算能力
大剑师·作战工具
还是大剑师兰特11 天前
MVC和MVVM模式详解+对比
mvc·mvvm·大剑师
还是大剑师兰特11 天前
前端设计模式:详解、应用场景与核心对比
前端·设计模式·大剑师
还是大剑师兰特14 天前
用豆包生成PPT的详细操作步骤
ai·powerpoint·大剑师
还是大剑师兰特15 天前
AI智慧农业20强
人工智能·思维导图·大剑师
还是大剑师兰特17 天前
ES6 class相关内容详解
es6·原型模式·大剑师
还是大剑师兰特18 天前
制作思维导图的在线网站及软件工具(10种)
思维导图·大剑师