JPEG文件数据结构以及将位图保存为JPG的代码 一、简述 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种是必须被所有程序识别的& |