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 后的数据流格式)感兴趣,我可以进一步展开说明。

相关推荐
还是大剑师兰特18 天前
拥抱AI,还是大剑师兰特2025年博客创作详细总结
人工智能·大剑师·2025博客之星
还是大剑师兰特19 天前
SVG图像文件结构
大剑师·svg图像
还是大剑师兰特21 天前
GIF图像文件结构
大剑师·gif图像结构
还是大剑师兰特21 天前
PNG图像文件结构
服务器·大剑师·png结构
还是大剑师兰特23 天前
单兵作战需要哪些计算能力
大剑师·作战工具
还是大剑师兰特1 个月前
MVC和MVVM模式详解+对比
mvc·mvvm·大剑师
还是大剑师兰特1 个月前
前端设计模式:详解、应用场景与核心对比
前端·设计模式·大剑师
还是大剑师兰特1 个月前
用豆包生成PPT的详细操作步骤
ai·powerpoint·大剑师
还是大剑师兰特1 个月前
AI智慧农业20强
人工智能·思维导图·大剑师