JPEG文件格式分析——经典干货!!!

JPEG格式说明

JPEG文件可以看作由多条数据段拼接成的文件,每条数据段包括两个部分:标记码数据流

标记码:由两个字节构成,其前一个字节为0xFF(通常只有一个0xFF,可以多个连续的0xFF),后一个字节则根据不同意义有不同数值。
数据流:记录了关于JPEG文件的相应信息(有些数据段无数据流)。

常用的数据段有SOI、APPx、DQT、SOF0、DHT、DRI、SOS、EOI等(SOI等只是数据段名,例如SOI是标记码为0xFFD8的数据段名,DHT是标记码为0xFFC4的数据段名)。

JPEG主要数据段说明

SOI ->Start of Image

含义:图像结束
标记码:0xFFD9 占2字节
数据流:无

APP0 ->Application 0(保留标记)

含义:应用程序保留标记0
标记码:0xFFE0——占2字节
数据流:
数据段长度——占2字节
标识符——5字节(固定值0x4A46494600=“JFIF0”)
版本号——2字节
密度单位——1字节(0->无单位 1->点数/英寸 2->点数/厘米)
X方向像素密度——2字节
Y方向像素密度——2字节
缩略图水平像素数目——1字节
缩略图垂直像素数目——1字节
缩略图RGB位图——长度为是3的倍数

APPx -> APPn->Application,x=1~15(可任选)

含义:应用程序保留标记x
标记码:0xFFE1~0xFFF——2字节(手机照片通常包含APP1,内容由地点,时间等)
数据流:
数据段长度——占2字节(不同数据段数据格式不同)

DQT ->Define Quantization Table,定义量化表

含义:定义量化表
标记码:0xFFDB——占2字节
数据流:
数据段长度——占2字节
量化表长度——占2字节
量化表ID——占1字节
量化表内容——占64字节
(量化表可以有多个,不超过4个)

SOF0 ->Start of Frame

含义:帧图像起始
标记码:0xFFC0——占2字节
数据流:
数据段长度——占2字节
精度——1字节
图像高度——2字节
图像宽度——2字节
颜色分量数——1字节(1-灰度图 3-YCrCb或YIQ 4-CMYK)
颜色分量信息——9字节

DHT ->Difine Huffman Table

含义:定义哈夫曼表
标记码:0xFFC4——占2字节
数据流:
数据段长度——占2字节
霍夫曼表长度——占2字节
表ID和表类型——1字节
不同位数的码字数量——16字节
编码内容——占16个不同位数的码字数量之和字节

DRI ->Define Restart Interval

含义:定义差分编码累计复位的间隔
标记码:0xFFDD——占2字节
数据流:
数据段长度——占2字节(长度固定为4)
MCU块的单元中的重新开始间隔——占2字节

SOS ->Start of Scan

含义:定义差分编码累计复位的间隔
标记码:0xFFC4——占2字节
数据流:
数据段长度——占2字节
颜色分量数——1字节(1-灰度图是 3-YCrCb或YIQ 4-CMYK)
颜色分量ID——1字节
直流/交流系数表号——1字节
压缩图像数据——3字节(固定值0x003F00)

EOI ->End of Image

含义:图像结束
标记码:0xFFD9 占2字节
数据流:无

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值