admin管理员组

文章数量:1539151

2024年4月4日发(作者:)

JPG文件结构分析

2010-04-06 22:32

【转自网络 作者:一 江秋水】

一、简述

JPEG是一个压缩标准,又可分为标准 JPEG、渐进式JPEG及JPEG2000三种:

①标准JPEG:以24位颜色存储单个光栅图像,是与平台无关的格式,支持最高

级 别的压缩,不过,这种压缩是有损耗的。此类型图片在网页下载时只能由上

而下依序显示图片,直到图片资料全部下载完毕,才能看到全貌。

②渐进式 JPEG:渐进式JPG为标准JPG的改良格式,支持交错,可以在网页下

载时,先呈现出图片的粗略外观后,再慢慢地呈现出完整的内容,渐进式JPG

的文件 比标准JPG的文件要来得小。

③JPEG2000:新一代的影像压缩法,压缩品质更好,其压缩率比标准JPEG高约

30%左右,同时支持有损 和无损压缩。一个极其重要的特征在于它能实现渐进

传输,即先传输图像的轮廓,然后逐步传输数据,让图像由朦胧到清晰显示。

以一幅24 位彩色图像为例,JPEG的压缩分为四个步骤:

①颜色转换:在将彩色图像进行压缩之前,必须先对颜色模式进行数据转换。转

换完成之后 还需要进行数据采样。

②DCT 变换:是将图像信号在频率域上进行变换,分离出高频和低频信息的处

理过程,然后再对图像的高频部分(即图像细 节)进行压缩。首先以象素为单

位将图像划分为多个8×8的矩阵,然后对每一个矩阵作DCT 变换。把8×8的

象素矩阵变成8×8的频率系数矩阵(所谓频率 就是颜色改变的速度),频率系

数都是浮点数。

③量化:由于下面第四步编码过程中使用的码本都是整数,因此要对频率系数进

行量化,将之转换为整 数。数据量化后,矩阵中的数据都是近似值,和原始图

像数据之间有了差异,这一差异是造成图像压缩后失真的主要原因。这一过程中,

质量因子的选取至为重要。 值选得大,可以大幅度提高压缩比,但是图像质量

就比较差,质量因子越小图像重建质量越好,但是压缩比越低。

④编码:编码是基于统计特性的方 法。

四个步骤都完成后的JPEG文件,其基本数据结构为两大类型:“段”和经过压

缩编码的图像数据。

二、数 据结构

1.段的一般结构如下表所示:

表1:段的一般结构

-----------------------------------------------------------------

名 称 字节数 数据 说明

精品文档

-----------------------------------------------------------------

段 标识 1 FF 每个新段的开始标识

段类型 1 类型编码(称作“标记码”)

段长 度 2 包括段内容和段长度本身,不包括段标

识和段类型

段内容 ≤65533字节

-----------------------------------------------------------------

说明:

①JPG 文件中所有关于宽度高度长度间隔这一类数据,凡是>1字节的,均采

用Motorola格式,即:高位在前,低位在后。

② 有些段没有长度描述也没有内容,只有段标识和段类型。文件头和文件尾均

属于这种段。

③段与段之间无论有多少FF都是合法的,这些FF称为“填充字 节”,必须被

忽略掉。

2.段类型有30种,但只有10种是必须被所有程序识别的,其它的类型都可以忽

略。所以下面只列出这 10种类型。

表2:段类型

---------------------------------------

名称 标 记码 说明

---------------------------------------

SOI D8 文件头

EOI D9 文 件尾

SOF0 C0 帧开始(标准 JPEG)

SOF1 C1 同上

DHT C4 定 义 Huffman 表(霍夫曼表)

SOS DA 扫描行开始

DQT DB 定义量化表

DRI DD 定 义重新开始间隔

APP0 E0 定义交换格式和图像识别信息

COM FE 注释

-----------------------------------------------------------

说明:有的文章也将DNL段(标记码=DC,定义扫描行数)列为必须段。

3.以下按一般JPEG文件的段排列顺序详细介绍 各种段的结构:

表3:SOI(文件头)

-----------------

名称 字节数 值

-----------------

段 标识 1 FF

精品文档

段类型 1 D8

-----------------

说明:这两个字节构成了 JPEG文件头。

表4:APP0(图像识别信息)

---------------------------------------------------------------------

-----

名 称 字节数 值 说明

---------------------------------------------------------------------

-----

段 标识 1 FF

段类型 1 E0

段长度 2 0010 如果有 RGB缩略图就

=16+3n

(以下为段内容)

交换格式 5 4A46494600 “JFIF”的ASCII码

主 版本号 1

次版本号 1

密度单位 1 0=无单位;1=点数/

英 寸;2=点数/厘米

X像素密度 2 水平方向的密

Y像素密 度 2 垂直方向的密度

缩略图X像素 1 缩略图水平像素数

缩 略图Y像素 1 缩略图垂直像素数目

(如果“缩略图X像素”和“缩略图Y像素”的值均>0,那么才有下面的数 据)

RGB缩略图 3×n n=缩略图像素总数=缩

略图X像素×缩略图Y像素

---------------------------------------------------------------------

-----

说明:

①JFIF是JPEG File Interchange Format的缩写,即JPEG文件交换格式,

另外还有TIFF等格式,很少 用

②“如果有RGB缩略图就=16+3n”是什么意思呢?比如说“缩略图X像素”和

“缩略图Y像素”的值均为48,就表示有一个48×48像素的 缩略图(n=

48×48),缩略图是24位真彩位图,用3个字节来表示一个像素,所以共占用

3n个字节。但大多数JPG文件都没有这个“鸡肋”缩略图。

表 5:COM(注释)

---------------------------------------------------------------------

-----

精品文档

名 称 字节数 值 说明

---------------------------------------------------------------------

-----

段 标识 1 FF

段类型 1 FE

段长度 2 其值=注释字符的字节数+2

段 内容 注释字符

---------------------------------------------------------------------

-----

说明:有的JPEG文件没有这个段。

精品文档

本文标签: 文件图像像素图片缩略图