JPEG图像压缩原理
jpeg编码原理

jpeg编码原理JPEG编码原理JPEG是一种常用的图像压缩格式,它可以将图像压缩至原始大小的1/10或更小,而且不会影响图像的质量。
JPEG编码原理是基于离散余弦变换(DCT)和量化技术。
1. 离散余弦变换(DCT)在JPEG编码中,图像被分成8x8个像素块,每个块都被视为一个矩阵。
通过对这些矩阵进行离散余弦变换(DCT),可以将每个块转换为一组频率系数。
离散余弦变换是一种将时域信号转换为频域信号的方法。
在JPEG中,每个块都被视为一个时域信号,并通过离散余弦变换将其转换为频域信号。
这些频率系数表示了该块中各种不同频率的分量。
2. 量化在经过DCT后,得到了每个块的频率系数。
但是由于人眼对于高频细节的感知能力较差,因此在JPEG编码中采用了量化技术来减少高频分量化就是将每个频率系数除以一个固定值,并四舍五入取整。
由于高频分量较大,因此它们被量化后会变得更小,从而减少了数据量。
3. 压缩在经过DCT和量化后,每个块都被转换为一组频率系数,并且高频分量已经被减少。
这些频率系数可以被进一步压缩,从而减少文件大小。
JPEG编码使用了霍夫曼编码技术来压缩这些频率系数。
霍夫曼编码是一种无损压缩技术,它可以将出现频率较高的符号用较短的编码表示,从而减少数据量。
4. 解压在解压JPEG图像时,首先需要将霍夫曼编码还原为频率系数。
然后对这些频率系数进行逆量化和逆离散余弦变换(IDCT),从而恢复原始图像。
逆量化是将每个频率系数乘以一个固定值,并四舍五入取整。
逆离散余弦变换是将每个块的频率系数转换回时域信号,从而恢复原始图像。
JPEG编码原理是基于离散余弦变换和量化技术的。
通过DCT将图像分解为一组频率系数,并采用量化技术减少高频分量,然后使用霍夫曼编码压缩这些频率系数。
在解压时,需要将霍夫曼编码还原为频率系数,并进行逆量化和逆离散余弦变换来恢复原始图像。
jpeg原理

jpeg原理
JPEG原理是一种用于压缩数字图像的标准,这种压缩技术可以将图像压缩至较小的文件大小,同时保留尽可能多的图像细节和质量。
JPEG 原理的实现过程主要包括色彩空间转换、离散余弦变换、量化、熵编码等步骤。
首先,图像需要进行色彩空间转换,将颜色信息表达方式从RGB转化为YCbCr。
这是因为人眼对亮度信息的感知要比色度信息更加敏感,所以我们可以将图像分为亮度和色度两个分量,用亮度分量来表示图像的主要内容,用色度分量来描述图像的细节和纹理。
接下来进行离散余弦变换,将图像信号从时间域转变为频率域。
这是因为在频率域中,图像信号更容易被压缩和表示。
离散余弦变换可以将原始图像信息分解为一系列频率分量,每个频率分量都表示了一定的信号贡献。
然后进行量化,将频率分量的数值精度降低,从而减少数据量。
在JPEG中,量化表用于量化每个频率分量,使得高频信号得到更大的压缩,低频信号得到较少压缩,以保留更多的图像信息。
最后进行熵编码,对量化后的频率分量进行编码。
熵编码主要是利用
统计学规律,将频率分量中出现频率高的信息用较短的编码表示,出
现频率较低的信息用较长的编码表示,以减少数据压缩后的文件大小。
综上所述,JPEG压缩原理利用了离散余弦变换和量化两个关键步骤,实现高效的数据压缩,其实现过程是复杂的,需要依托健全的算法和
工具来实现。
目前,JPEG标准已经成为数字图像压缩的事实标准,被广泛应用于数字摄影、Web图片、数字印刷等领域。
如果您也对数字图像处理感兴趣,可以尝试学习相关的计算机图形学课程,了解更多
关于JPEG图像压缩的细节。
jpg原理

jpg原理
JPG是一种常用的图像压缩格式,其原理是基于离散余弦变换(Discrete Cosine Transform, DCT)和量化(Quantization)技术。
首先,JPG将图像分为8×8的小块,对每个小块进行DCT变换。
DCT变换可以将图像的空域信息转换成频域信息,使得大部分图像信息压缩在低频系数中,而高频系数则表示图像细节。
通过DCT变换,我们可以得到一个8×8的矩阵,其中各个元素代表该频域上的频率分量强度。
接下来,JPG将DCT后的矩阵进行量化。
量化的目的是通过舍弃高频部分的细节信息来减少数据量,从而实现图像压缩。
在量化过程中,JPG使用了一个量化表,其中存储了用于量化不同频率分量的量化系数。
量化表的设计是JPEG标准的重要部分,不同的量化表可以用于不同的应用场景,以平衡压缩比和图像质量。
最后,JPG对量化后的矩阵进行熵编码。
熵编码是一种无损压缩算法,它利用字符出现的频率来构建编码表,将出现频率较高的字符用较短的二进制码表示,而出现频率较低的字符用较长的二进制码表示。
熵编码可以进一步压缩数据量,提高压缩比。
解码时,JPG会反向进行熵解码、逆量化和逆DCT处理,最终恢复出原始的图像数据。
总之,JPG图像的压缩原理是通过DCT变换将图像转换为频域信息,然后进行量化和熵编码来减少数据量。
解码时,通过逆向的过程将压缩后的数据恢复为原始图像。
图像压缩算法原理:JPEG、PNG等压缩方式

图像压缩算法原理:JPEG、PNG等压缩方式图像压缩算法旨在减小图像文件的大小,同时保持尽可能多的图像质量。
JPEG(Joint Photographic Experts Group)和PNG(Portable Network Graphics)是两种常见的图像压缩方式,它们有不同的原理和适用场景。
JPEG 压缩算法原理:离散余弦变换(DCT): JPEG 使用离散余弦变换将图像从空间域变换到频域。
DCT将图像分解为一系列频率分量,允许更多的信息被聚焦在低频分量上,这些低频分量对人眼更敏感。
量化:在DCT之后,通过量化将每个频率分量的数值映射为一个较低的精度。
高频分量被更多地量化为零,从而进一步减小数据。
哈夫曼编码:使用哈夫曼编码对量化后的数据进行熵编码。
哈夫曼编码对常见的值使用较短的编码,对不常见的值使用较长的编码,以进一步减小文件大小。
色彩空间转换: JPEG通常将RGB颜色空间转换为YCbCr颜色空间,其中Y表示亮度(灰度),Cb和Cr表示色度(颜色信息)。
这样可以将图像的亮度和色度分离,使得在色度上的降采样更容易。
PNG 压缩算法原理:无损压缩:与JPEG不同,PNG是一种无损压缩算法,它保留了原始图像的每一个像素的精确信息。
这使得PNG适用于需要完整性的图像,如图标、图形等。
差分预测: PNG使用差分预测(Delta Predictive Coding)来减小冗余。
通过预测每个像素值与其周围像素值之间的差异,PNG可以用较小的数据表示图像。
LZ77压缩: PNG使用LZ77算法进行数据压缩。
该算法通过查找并用指向先前出现的相似数据的指针替换当前数据,从而减小文件大小。
无调色板和透明度支持: PNG支持真彩色图像,并且可以存储图像的透明度信息。
这使得PNG在需要保留图像质量的同时支持透明背景。
总体而言,JPEG适用于需要较小文件大小,且可以容忍一些信息损失的场景,而PNG适用于需要无损压缩和透明度支持的场景。
jpeg的霍夫曼编码

jpeg的霍夫曼编码
霍夫曼编码是一种无损数据压缩算法,其基本原理是利用数据的概率分布来构建最优前缀码,并对数据进行编码。
JPEG图像的霍夫曼编码是图像压缩中的一种常见方法。
在JPEG图像的霍夫曼编码中,首先需要对图像进行分块处理,通常是将图像分成8x8的小块。
然后,对每个小块进行DCT(离散余弦变换)变换,将图像从空间域变换到频率域。
在频率域中,图像的能量主要集中在少数几个系数上,因此可以忽略一些低频系数,从而达到压缩的目的。
在霍夫曼编码中,对每个DCT系数赋予一个二进制码,码字的长度与该系数的概率成反比,即出现概率越高的系数对应的码字越短,而出现概率越低的系数对应的码字越长。
这样,在编码时可以有效地减少数据量,从而达到压缩的目的。
在JPEG图像的霍夫曼编码中,通常会将图像分成多个层次进行编码,每个层次对应不同的压缩比和图像质量。
用户可以根据需要选择不同的层次来获取不同的压缩效果和图像质量。
总的来说,JPEG图像的霍夫曼编码是一种有效的图像压缩方法,能够有效地减少数据量,同时保持较高的图像质量。
jpeg 压缩原理

jpeg 压缩原理JPEG(Joint Photographic Experts Group)是一种常见的图像压缩格式,广泛应用于数字摄影、网页设计、图像传输等领域。
JPEG 压缩原理是一种有损压缩方法,通过舍弃图像中的一些细节信息,以减少图像文件的大小,从而实现压缩的目的。
JPEG压缩原理主要包括离散余弦变换(DCT)、量化和熵编码三个步骤。
JPEG使用离散余弦变换(DCT)将图像从空域转换到频域。
DCT 将图像分解成一系列频率分量,这些频率分量代表了图像中不同频率的变化。
高频分量通常代表了图像中的细节信息,而低频分量则代表了图像的整体结构。
通过DCT变换,JPEG将图像转换为一系列频率分量的系数,从而为后续的压缩操作提供了基础。
接下来,JPEG使用量化操作对DCT系数进行处理。
量化是一种将连续数值转换为离散数值的过程,它通过将频率分量系数除以一个固定的量化矩阵中的对应元素,得到一个整数值。
量化过程中,高频分量的系数经过除以较大的量化值,从而减小了它们的数值,而低频分量的系数经过除以较小的量化值,保留了更多的信息。
这就导致了高频分量的细节信息丢失,从而实现了图像压缩。
JPEG使用熵编码对量化后的系数进行编码。
熵编码是一种根据数据出现的概率进行编码的方法,它将出现概率较高的数据用较短的编码表示,而将出现概率较低的数据用较长的编码表示。
JPEG使用基于哈夫曼编码的熵编码方法,根据不同系数的出现概率分配不同的编码,从而进一步减小了图像文件的大小。
总结起来,JPEG压缩原理通过离散余弦变换将图像转换到频域,然后通过量化和熵编码来减小图像文件的大小。
这种有损压缩方法能够在保持图像质量的前提下,显著减小图像文件的大小,从而实现更高效的图像传输和存储。
然而,需要注意的是,JPEG压缩是一种有损压缩方法,会引入一定的失真。
压缩比越高,图像质量损失越大。
因此,在实际应用中,需要根据具体要求和场景来选择合适的压缩比,以平衡图像质量和文件大小的关系。
JPEG压缩原理LZW算法

JPEG压缩原理LZW算法JPEG(Joint Photographic Experts Group)是一种常用的图像压缩格式,常用于对数字图像的有损压缩。
JPEG压缩算法的原理主要包括色彩空间转换、离散余弦变换、量化和熵编码等步骤。
本文将重点介绍JPEG压缩中的熵编码步骤,即LZW(Lempel-Ziv-Welch)算法。
LZW算法是一种无损压缩算法,由Abraham Lempel、Jacob Ziv和Terry Welch于1977年提出。
它通过利用数据中重复出现的模式来压缩数据,将重复的模式用较短的编码表示,从而减小数据的存储空间。
LZW算法的基本思想是建立一个编码字典,将数据中的模式映射到特定的编码。
算法逐个读取输入的数据字符,将字符与之前已经出现的模式进行匹配。
如果匹配成功,则继续读取下一个字符,与之前的模式再进行匹配。
如果匹配失败,则将之前匹配成功的模式的编码输出,并将当前字符及其前缀添加到字典中作为新的模式。
这样,压缩数据中的重复模式就可以用更短的编码表示,实现数据的压缩。
在JPEG压缩中,LZW算法主要应用于熵编码步骤,用于对离散余弦变换后的图像的系数进行压缩。
具体步骤如下:1.构建初始的编码字典,包含0到255的所有灰度级作为初始编码。
2.遍历离散余弦变换后的图像系数,将系数分组为一个个的模式。
每个模式可以是一系列连续的系数,可以是独立的一个系数。
3.逐个读取模式,检查字典中是否存在该模式。
-如果存在,继续读取下一个系数,并将当前模式与读取的系数连接形成新的模式。
-如果不存在,将之前匹配成功的模式的编码输出,并将当前模式及其前缀添加到字典中作为新的模式。
4.重复步骤3,直到遍历完所有的模式。
5.将最后一个匹配成功的模式的编码输出。
通过LZW算法,离散余弦变换后的图像系数可以用较短的编码表示,从而实现对图像数据的压缩。
在解码时,可以根据压缩数据中的编码,将编码解析为相应的系数。
总结起来,LZW算法是JPEG压缩中的一种熵编码方法,通过利用数据中的重复模式进行压缩,将重复的模式用较短的编码表示。
图像压缩原理

本节以JPEG为例,讲解静态图像压缩的原理。
JPEG图像压缩主要分为下面四个过程,离散余弦变换、量化、编码以及组成位数据流。
下面通过一个简单的例子说明各步骤的原理。
1.离散余弦变换(1)通过离散余弦变换(DCT变换,下略),可以将能量集中在矩阵左上角的少数几个系数上。
简单地说,我们可以将DCT看作用一个8行8列的二维数组产生另一个8行8列的二维数组的函数。
也就是说,把一个数组通过某种变换,变成另一个数组。
首先将一幅图像划分成一个个8*8像素的图像块。
比如,原图的尺寸是640*480,那么将会被划分成80行60列的图像块。
如果图像只包含灰度,那么每个象素都会用一个8bit的数字表示。
因此可以将每个图像块表示成一个8行8列的二维数组,这个数组中每个元素都是0~255的8bit整数。
DCT变换就是作用在这个数组上。
再看一下彩色的情况。
如果图像是彩色的,那么每个象素都可以用24bit、相当于3个8bit的组合来表示。
因此可以用3个8行8列的数组来表示这个8*8的图像块。
DCT变换作用于每一个数组。
(2)用f表示像素值的数组,f(i,j)表示第i行第j列的值,则DCT变换之后定义一个新的数组F(u,v)表示第u行v列的值。
DCT变换通过下面公式完成:逆DCT变换公式:在上面两公式中,当u,v=0时,,其他情况下,C(u),C(v)=1。
下面举例说明。
下面矩阵表示一个8*8的图像样本的原始数组。
为了便于计算,在进行变换之前先对原始图像中的每个样本数据减去128。
然后再按照公式计算出数组中每个元素的值。
举F(0,0)的值的计算过程如下:按照这样,继续计算其他值:f(i,j)经过DCT变换之后得到了F(i,j),其中F(0,0)是直流系数,称为DC系数,其他的为交流系数,称为AC系数。
2.量化为了达到压缩的目的,我们需要对经过DCT变换的DCT系数进行量化,目的是减小非0系数的幅度以增加0值系数的数目。
在一定的主观保真的前提下,丢掉那些对视觉效果影响不大的数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JPEG编码JPEG是联合图象专家组(Joint Picture Expert Group)的英文缩写,是国际标准化组织(ISO)和CCITT联合制定的静态图象的压缩编码标准。
和相同图象质量的其它常用文件格式(如GIF,TIFF,PCX)相比,JPEG是目前静态图象中压缩比最高的。
我们给出具体的数据来对比一下。
例图采用Windows95目录下的Clouds.bmp,原图大小为640*480,256色。
用工具SEA(version1.3)将其分别转成24位色BMP、24位色JPEG、GIF(只能转成256色)压缩格式、24位色TIFF压缩格式、24位色TGA压缩格式。
得到的文件大小(以字节为单位)分别为:921,654,17,707,177,152,923,044,768,136。
可见JPEG比其它几种压缩比要高得多,而图象质量都差不多(JPEG处理的颜色只有真彩和灰度图)。
正是由于JPEG的高压缩比,使得它广泛地应用于多媒体和网络程序中,例如HTML语法中选用的图象格式之一就是JPEG(另一种是GIF)。
这是显然的,因为网络的带宽非常宝贵,选用一种高压缩比的文件格式是十分必要的。
JPEG有几种模式,其中最常用的是基于DCT变换的顺序型模式,又称为基线系统(Baseline),以下将针对这种格式进行讨论。
1.JPEG的压缩原理JPEG的压缩原理其实上面介绍的那些原理的综合,博采众家之长,这也正是JPEG有高压缩比的原因。
其编码器的流程为:图9.3 JPEG编码器流程解码器基本上为上述过程的逆过程:图9.4 解码器流程DCT下面对正向离散余弦变换(FDCT)变换作几点说明。
(1)对每个单独的彩色图像分量,把整个分量图像分成8×8的图像块,如图所示,并作为两维离散余弦变换DCT的输入。
通过DCT变换,把能量集中在少数几个系数上。
(2)DCT变换使用下式计算:它的逆变换使用下式计算:上面两式中,C(u),C(v) = (2)-1/2,当u, v = 0;C(u),C(v) = 1,其他。
f(i, j)经DCT变换之后,F(0,0)是直流系数,其他为交流系数。
(3)在计算两维的DCT变换时,可使用下面的计算式把两维的DCT变换变成一维的DCT变换:量化8×8的图象经过DCT变换后,其低频分量都集中在左上角,高频分量分布在右下角(DCT变换实际上是空间域的低通滤波器)。
由于该低频分量包含了图象的主要信息(如亮度),而高频与之相比,就不那么重要了,所以我们可以忽略高频分量,从而达到压缩的目的。
如何将高频分量去掉,这就要用到量化,它是产生信息损失的根源。
这里的量化操作,就是将某一个值除以量化表中对应的值。
由于量化表左上角的值较小,右上角的值较大,这样就起到了保持低频分量,抑制高频分量的目的。
JPEG使用的颜色是YUV格式。
我们提到过,Y分量代表了亮度信息,UV分量代表了色差信息。
相比而言,Y分量更重要一些。
我们可以对Y采用细量化,对UV采用粗量化,可进一步提高压缩比。
所以上面所说的量化表通常有两张,一张是针对Y的;一张是针对UV的。
如果不使用这两种表,你也可以把自己的量化表替换它们。
亮度量化值表和色度量化值表直流编码、交流编码上面讲了,经过DCT变换后,低频分量集中在左上角,其中F(0,0)(即第一行第一列元素)代表了直流(DC)系数,即8×8子块的平均值,要对它单独编码。
由于两个相邻的8×8子块的DC系数相差很小,所以对它们采用差分编码DPCM,可以提高压缩比,也就是说对相邻的子块DC系数的差值进行编码。
Delta=DC(0,0)k-DC(0,0)k-1 8×8的其它63个元素是交流(AC)系数,采用行程编码。
这里出现一个问题:这63个系数应该按照怎么样的顺序排列?为了保证低频分量先出现,高频分量后出现,以增加行程中连续“0”的个数,这63个元素采用了“之”字型(Zig-Zag)的排列方法,如图9. 5所示。
图9.5 Zig-Zag量化DCT系数序号0 1 5 6 14 15 27 252 4 7 13 16 26 29 423 8 12 17 25 30 41 439 11 18 24 31 40 44 5310 19 23 32 39 45 52 5420 22 33 38 46 51 55 6021 34 37 47 50 56 59 6135 36 48 49 57 58 62 63这63个AC系数行程编码的码字用两个字节表示,如图9.6所示。
图9.6 行程编码熵编码上面,我们得到了DC码字和AC行程码字。
为了进一步提高压缩比,需要对其再进行熵编码,这里选用Huffman编码,分成两步:(1)熵编码的中间格式表示对于AC系数,有两个符号。
符号1为行程和尺寸,即上面的(RunLength,Size)。
(0,0)和(15,0)是两个比较特殊的情况。
(0,0)表示块结束标志(EOB),(15,0)表示ZRL,当行程长度超过15时,用增加ZRL的个数来解决,所以最多有三个ZRL(3×16+15=63)。
符号2为幅度值(Amplitude)。
对于DC系数,也有两个符号。
符号1为尺寸(Size);符号2为幅度值(Amplitude)。
(2)熵编码对于AC系数,符号1和符号2分别进行编码。
零行程长度超过15个时,有一个符号(15,0),块结束时只有一个符号(0,0)。
对符号1进行Hufffman编码(亮度,色差的Huffman码表不同)。
对符号2进行变长整数VLI编码。
举例来说:Size=6时,Amplitude的范围是-63~-32,以及32~63,对绝对值相同,符号相反的码字之间为反码关系。
所以AC 系数为32的码字为100000,33的码字为100001,-32的码字为011111,-33的码字为011110。
符号2的码字紧接于符号1的码字之后。
对于DC系数,Y和UV的Huffman码表也不同。
掉了这么半天的书包,你可能已经晕了,呵呵。
举个例子来说明上述过程就容易明白了。
下面为8×8的亮度(Y)图象子块经过量化后的系数。
15 0 -1 0 0 0 0 0-2 -1 0 0 0 0 0 0-1 -1 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0可见量化后只有左上角的几个点(低频分量)不为零,这样采用行程编码就很有效。
第一步,熵编码的中间格式表示:先看DC系数。
假设前一个8×8子块DC 系数的量化值为12,则本块DC系数与它的差为3,根据下表Size Amplitude0 01 –1,12 –3,-2,2,33 –7~-4,4~74 –15~-8,8~155 –31~-16,16~316 –63~-32,32~637 –127~-64,64~1278 –255~-128,128~2559 –511~-256,256~51110 –1023~512,512~102311 –2047~-1024,1024~2047 查表得Size=2,Amplitude=3,所以DC中间格式为(2)(3)。
下面对AC系数编码。
经过Zig-Zag扫描后,遇到的第一个非零系数为-2,其中遇到零的个数为1(即RunLength),根据下面这张AC系数表:Size Amplitude1 –1,12 –3,-2,2,33 –7~-4,4~74 –15~-8,8~155 –31~-16,16~316 –63~-32,32~637 –127~-64,64~1278 –255~-128,128~2559 –511~-256,256~51110 –1023~512,512~1023查表得Size=2。
所以RunLength=1,Size=2,Amplitude=3,所以AC中间格式为(1,2)(-2)。
其余的点类似,可以求得这个8×8子块熵编码的中间格式为(DC)(2)(3),(1,2)(-2),(0,1)(-1),(0,1)(-1),(0,1)(-1),(2,1)(-1),(EOB)(0,0)第二步,熵编码:对于(2)(3):2查DC亮度Huffman表得到11,3经过VLI编码为011;对于(1,2)(-2):(1,2)查AC亮度Huffman表得到11011,-2是2的反码,为01;对于(0,1)(-1):(0,1)查AC亮度Huffman表得到00,-1是1的反码,为0;……最后,这一8×8子块亮度信息压缩后的数据流为11011, 1101101, 000, 000, 000, 111000,1010。
总共31比特,其压缩比是64×8/31=16.5,大约每个象素用半个比特。
可以想见,压缩比和图象质量是呈反比的,以下是压缩效率与图象质量之间的大致关系,可以根据你的需要,选择合适的压缩比。
表9.1 压缩比与图象质量的关系以上我们介绍了JPEG压缩的原理,其中DC系数使用了预测编码DPCM,AC系数使用了变换编码DCT,二者都使用了熵编码Huffman,可见几乎所有传统的压缩方法在这里都用到了。
这几种方法的结合正是产生JPEG 高压缩比的原因。
顺便说一下,该标准是JPEG小组从很多种不同中方案中比较测试得到的,并非空穴来风。
上面介绍了JPEG压缩的基本原理,下面介绍一下JPEG的文件格式。
2.JPEG的文件格式JPEG文件大体上可以分成以下两个部分:标记码(Tag)加压缩数据。
先介绍标记码部分。
标记码部分给出了JPEG图象的所有信息(有点类似于BMP中的头信息,但要复杂的多),如图象的宽、高、Huffman表、量化表等等。
标记码有很多,但绝大多数的JPEG文件只包含几种。
标记码的结构为:SOIDQTDRISOF0DHTSOS…EOI标记码由两个字节组成,高字节为0XFF,每个标记码之前可以填上个数不限的填充字节0XFF。
下面介绍一些常用的标记码的结构及其含义。
(1)SOI(Start of Image)标记结构字节数0XFF 10XD8 1可作为JPEG格式的判据(JFIF还需要APP0的配合)(2)APP0(Application)标记结构字节数意义0XFF 10XE0 1Lp 2 APP0标记码长度,不包括前两个字节0XFF,0XE0Identifier 5 JFIF识别码0X4A,0X46,0X49,0X46,0X00 Version 2 JFIF版本号可为0X0101或者0X0102 Units 1 单位,等于零时表示未指定,为1表示英寸,为2表示厘米Xdensity 2 水平分辨率Ydensity 2 垂直分辨率Xthumbnail 1 水平点数Ythumbnail 1 垂直点数RGB0 3 RGB的值RGB1 3 RGB的值…RGBn 3 RGB的值,n=Xthumbnail*Ythumbnail APP0是JPEG保留给Application所使用的标记码,而JFIF将文件的相关信息定义在此标记中。