JPEG文件由上面的8个部分构成,以JPEG文件格式保存的图像实际上是2个例外格式的混合物

格式:JFIF(JPEG档的交流格式)
调减:JPEG(灰阶映像压缩比约为10:1;彩色映像约为20:1)
以JPEG文件格式保存的图像实际上是2个差异格式的混合物:JPEG格式规范自己,用来定义图像的缩减方法,并且被包在定议分辨率和颜料方式的图像数据格式之中。Photoshop和实际每个能读取和写入JPEG文件格式的别的应用程序,以 JFIF文件格式(JPEG文件调换格式, JPEG File Interchonge Format)或与JFIF格式非常象的其余格式保存图像数据。JFIF文件格式只是将一种图像格或环绕JPEG压缩的一种不难方法,它们并未其他的更多效益。

JPG文件是以标记来分段管理的,这个标记形式都是0xFFxx

图片 1

前期的JFIF文件格式规范史允许8位灰度图像和24位RGB图像;可是Adobe『修改」了此种格式,使之也能处理32位CMYK形式的多寡。可是,多数版面设计应用程序实际上不可以将
CMYK情势的JPEG图像分离开,所以 Adobe所做的那一个修改的含义并不大。JPEG文件格式允许用可变压缩的章程,保存8位、24位、32位深度的图像。例如,当以JPEG格式保存一幅 Photoshop图像时,Photoshop给出了三种保留选项:低压缩率,中等压缩率,高压缩率及最好的分辨率等级别。实验表明,当举行印刷或在显示器上着眼时,JPEG一般可将图像压缩为原大小的分外之一而看不出鲜明差距。图像会分解成8×8像素图像单元的小方块。那种JPEG失真有时会在消息图片中窥见,那一个图片在开展电子传输前被大大地回落了,随後又以高放大倍率举办了印刷。

有的常用标记

SOI 0xD8 图像开始
APP0 0xE0 JFIF应用数据块
APPn 0xE1 – 0xEF 其他的应用数据块(n, 1~15)
DQT 0xDB 量化表
SOF0 0xC0 帧开始
DHT 0xC4 霍夫曼(Huffman)表
SOS 0xDA 扫描线开始
EOI 0xD9 图像结束

JPEG使用了有损压缩格式,那就使它变成便捷展现图像并保存较好分辨率的杰出格式。也正是由於JPEG格式可以对扫描或自然图像举行大幅度的滑坡,利於储存或透过调制解调器进行传递,所以在Internet上收获了大规模的使用。
JPEG格式有一个特殊的变种,名为
「Progressive JPEG」。在创设Progressive JPEG 文件肘,数据是如此安排的:在装入图像时,先导只浮现一个歪曲的图像,随着数据的装入,图像逐步变得清楚。

jfif文件结构

JPEG文件由上边的8个部分组成:

(1) 图像开始SOI(Start of Image)标记

(2) APP0标记(Marker)

① APP0长度(length)

② 标识符(identifier)

③ 版本号(version)


X和Y的密度单位(units=0:无单位;units=1:点数/英寸;units=2:点数/毫米)

⑤ X方向像素密度(X density)

⑥ Y方向像素密度(Y density)

⑦ 缩略图水平像素数目(thumbnail horizontal pixels)

⑧ 缩略图垂直像素数目(thumbnail vertical pixels)

⑨ 缩略图RGB位图(thumbnail RGB bitmap)

(3) APPn标记(Markers),其中n=1~15(任选)

① APPn长度(length)

② 由于详细音信(application specific information)

(4) 一个依然多个量化表DQT(difine quantization table)

① 量化表长度(quantization table length)

② 量化表数目(quantization table number)

③ 量化表(quantization table)

(5) 帧图像早先SOF0(Start of Frame)

① 帧发轫长度(start of frame length)

② 精度(precision),每个颜色分量每个像素的位数(bits per pixel per color
component)

③ 图像中度(image height)

④ 图像宽度(image width)

⑤ 颜色分量数(number of color components)

⑥ 对各样颜色分量(for each component)

  • ID
  • 笔直方向的范本因子(vertical sample factor)
  • 水平方向的样本因子(horizontal sample factor)
  • 量化表号(quantization table#)

(6) 一个依然七个霍夫曼表DHT(Difine Huffman Table)

① 霍夫曼表的长度(Huffman table length)

② 类型、AC或者DC(Type, AC or DC)

③ 索引(Index)

④ 位表(bits table)

⑤ 值表(value table)

(7) 扫描发轫SOS(Start of Scan)

① 扫描起首长度(start of scan length)

② 颜色分量数(number of color components)

③ 每个颜色分量

  • ID
  • 调换周详表号(AC table #)
  • 直流周密表号(DC table #)

④ 压缩图像数据(compressed image data)

(8) 图像截止EOI(End of Image)

JPEG格式的重点不足之处也正是它的最大亮点。也就是说,有损压缩算法将JPEG只局限於显示格式,而且每回保存JPEG格式的图像时都会丢掉一些数目。因而,寻常只在撰写的最後阶段以JPEG格式保存三回图像即可。

JFIF格式中APP0域的详实结构

偏移

长度

内容

块的名称

说明

0

2 byte

0xFFD8

(Start of Image,SOI)

图像开始

2

2 byte

0xFFE0

APP0(JFIF application segment)

JFIF应用数据块

4

2 bytes

 

length of APP0 block

APP0块的长度

6

5 bytes

 

"JFIF"+"0"

识别APP0标记

11

1 byte

 

<Major version>

主要版本号(如版本1.02中的1)

12

1 byte

 

<Minor version>

次要版本号(如版本1.02中的02)

13

1 byte

 

<Units for the X
and Y densities>

X和Y的密度单位

units=0:无单位

units=1:点数/英寸

units=2:点数/厘米

14

2 bytes

 

<Xdensity>

水平方向像素密度

16

2 bytes

 

<Ydensity>

垂直方向像素密度

18

1 byte

 

<Xthumbnail>

缩略图水平像素数目

19

1 byte

 

<Ythumbnail>

缩略图垂直像素数目

 

3n

 

< Thumbnail RGB bitmap>

缩略RGB位图(n为缩略图的像素数)

     

Optional JFIF extension APP0 marker segment(s)

任选的JFIF扩展APP0标记段

 

……

 

……

 
 

2 byte

0xFFD9

(EOI) end-of-file

图像文件结束标记

JPEG简介
微处理机中的存放顺序有正序(big
endian)和逆序(little endian)之分。正序存放就是高位元组存放在前没有元组在後,而逆序存放就是没有元组在前高位元组在後。例如,十六进位数爲A02B,正序存放就是A02B,逆序存放就是2BA0。One plus(One plus)集团的处理器使用正序存放,而英代尔(速龙)公司的统计机使用逆序。JPEG文件中的位元组是根据正序排列的。
________________________________________
JPEG委员会在制定JPEG标准时,定义了成千成万标志(marker)用来区分和辨别图像资料及其相关信息,但作者没有找到JPEG委员会对JPEG文件沟通格式的家喻户晓概念。直到1998年1十一月从分析网上具体的JPG图像来看,使用相比较广泛的仍旧JPEG文件交流格式(JPEG File Interchange Format,JFIF)版本号爲1.02。那是1992年九月由在C-Cube 铭瑄公司做事的埃里克 哈密尔敦提出的。此外还有TIFF JPEG等格式,但由於那种格式比较复杂,因而半数以上应用程式都接济JFIF文件交流格式。
JPEG文件使用的顔色空间是CCIR 601推荐标准开展的多姿多彩空间(参看第7章)。在这些多姿多彩空间中,每个分量、每个图元的电平规定爲255级,用8位代码表示。从RGB转换成YCbCr空间时,使用上面的规范的转移关系:
       Y = 256 * E’y
      Cb = 256 * [E’Cb] +
128
      Cr = 256 * [E’Cr] +
128
个中亮度电平E’y和色差电平E’Cb和E’Cb分别是CCIR 601概念的参数。由於E’y的范围是0~1,E’Cb和E’Cb的范围是-0.5~+0.5,由此Y, Cb和Cr的最大值必须要箝到255。於是RGB和YCbCr之间的变换关系须要按照下边的措施统计。
(1) 从RGB转换成YCbCr
YCbCr(256级)分量可平昔从用8位表示的RGB分量统计获得:
       Y =    0.299R + 0.587G + 0.114
B
        Cb = – 0.1687R – 0.3313G + 0.5B +
128
       Cr =    0.5R – 0.4187G

JPEG定义的标志


Symbol

(符号)


Code Assignment

(标记代码)


Description

(说明)


Start Of Frame markers, non-hierarchical Huffman coding

SOF0

0xFFC0

Baseline DCT

SOF1

0xFFC1

Extended sequential DCT

SOF2

0xFFC2

Progressive DCT

SOF3

0xFFC3

Spatial (sequential) lossless


Start Of Frame markers, hierarchical Huffman coding

SOF5

0xFFC5

Differential sequential DCT

SOF6

0xFFC6

Differential progressive DCT

SOF7

0xFFC7

Differential spatial lossless


Start Of Frame markers, non-hierarchical arithmetic coding

JPG

0xFFC8

Reserved for JPEG extensions

SOF9

0xFFC9

Extended sequential DCT

SOF10

0xFFCA

Progressive DCT

SOF11

0xFFCB

Spatial (sequential) Lossless


Start Of Frame markers, hierarchical arithmetic coding

SOF13

0xFFCD

Differential sequential DCT

SOF14

0xFFCE

Differential progressive DCT

SOF15

0xFFCF

Differential spatial Lossless


Huffman table specification

DHT

0xFFC4

Define Huffman table(s)


arithmetic coding conditioning specification

DAC

0xFFCC

Define arithmetic conditioning table


Restart interval termination

RSTm

0xFFD0~0xFFD7

Restart with modulo 8 counter m


Other marker

SOI

0xFFD8

Start of image

EOI

0xFFD9

End of image

SOS

0xFFDA

Start of scan

DQT

0xFFDB

Define quantization table(s)

DNL

0xFFDC

Define number of lines

DRI

0xFFDD

Define restart interval

DHP

0xFFDE

Define hierarchical progression

EXP

0xFFDF

Expand reference image(s)

APPn

0xFFE0~0xFFEF

Reserved for application use

JPGn

0xFFF0~0xFFFD

Reserved for JPEG extension

COM

0xFFFE

Comment


Reserved markers

TEM

0xFF01

For temporary use in arithmetic coding

RES

0xFF02~0xFFBF

Reserved

  • 0.0813B + 128
    亟待留意的是或不是颇具图像文件格式都根据R0,G0,B0,……
    Rn,Gn,Bn的主次存储样本资料,由此在RGB文件转换成JFIF文件时索要首先验证RGB的次第。
    (2) 从YCbCr转换成RGB
    RGB分量可径直从YCbCr(256级)分量总计得到:
             R = Y + 1.402
    (Cr-128)
          G = Y – 0.34414
    (Cb-128) – 0.71414 (Cr-128)
          B = Y + 1.772 (Cb-128)

在JFIF文件格式中,图像样本的存放顺序是从左到右和从上到下。那就是说JFIF文件中的首个图像样本是图像左上角的样书。

文本结构
JFIF文件格式直接动用JPEG标准爲应用程式定义的成百上千符号,因而JFIF格式成了事实上JPEG文件交流格式标准。JPEG的各样标记都是由2个位元组组成,其前一个位元组是原则性值0xFF。每个标记之前还能加上数目不限的0xFF填充位元组(fill byte)。上面是内部的8个标志:
1.        SOI  0xD8           图像开头
2.        APP0 0xE0           JFIF应用材料块
3.        APPn 0xE1 – 0xEF           其他的利用材料块(n, 1~15)
4.        DQT  0xDB           量化表
5.        SOF0 0xC0           帧开始
6.        DHT  0xC4           霍夫曼(Huffman)表
7.        SOS  0xDA           扫描线开首
8.        EOI  0xD9           图像为止
爲使读者对JPEG定义的标志一目通晓,现将JPEG的记号码列於表6-05,并保存英文解释。
表6-05 JPEG定义的标记
Symbol
(符号)        Code Assignment
(标记代码)        Deforbiddenion
(说明)
Start Of Frame markers, non-hierarchical Huffman coding
SOF0        0xFFC0        Baseline DCT
SOF1        0xFFC1        Extended sequential DCT
SOF2        0xFFC2        Progressive DCT
SOF3        0xFFC3        Spatial (sequential) lossless
Start Of Frame markers, hierarchical Huffman coding
SOF5        0xFFC5        Differential sequential DCT
SOF6        0xFFC6        Differential progressive DCT
SOF7        0xFFC7        Differential spatial lossless
Start Of Frame markers, non-hierarchical arithmetic coding
JPG        0xFFC8        Reserved for JPEG extensions
SOF9        0xFFC9        Extended sequential DCT
SOF10        0xFFCA        Progressive DCT
SOF11        0xFFCB        Spatial (sequential) Lossless
Start Of Frame markers, hierarchical arithmetic coding
SOF13        0xFFCD        Differential sequential DCT
SOF14        0xFFCE        Differential progressive DCT
SOF15        0xFFCF        Differential spatial Lossless
Huffman table specification
DHT        0xFFC4        Define Huffman table(s)
arithmetic coding conditioning specification
DAC        0xFFCC        Define arithmetic conditioning table
Restart interval termination
RSTm        0xFFD0~0xFFD7        Restart with modulo 8 counter
m
Other marker
SOI        0xFFD8        Start of image
EOI        0xFFD9        End of image
SOS        0xFFDA        Start of scan
DQT        0xFFDB        Define quantization table(s)
DNL        0xFFDC        Define number of lines
DRI        0xFFDD        Define restart interval
DHP        0xFFDE        Define hierarchical progression
EXP        0xFFDF        Expand reference image(s)
APPn        0xFFE0~0xFFEF        Reserved for application
use
JPGn        0xFFF0~0xFFFD        Reserved for JPEG
extension
COM        0xFFFE        Comment
Reserved markers
TEM        0xFF01        For temporary use in arithmetic coding
RES        0xFF02~0xFFBF        Reserved

JPEG文件由下面的8个部分构成:
(1) 图像初阶SOI(Start of Image)标记
(2) APP0标记(Marker)
① APP0长度(length)
② 识别字(identifier)
③ 版本号(version)
④ X和Y的密度单位(units=0:无单位;units=1:点数/英寸;units=2:点数/毫米)
⑤ X方向图元密度(X density)
⑥ Y方向图元密度(Y density)
⑦ 缩略图水平图元数目(thumbnail horizontal pixels)
⑧ 缩略图垂直图元数目(thumbnail vertical pixels)
⑨ 缩略图RGB点阵图(thumbnail RGB bitmap)
(3) APPn标记(Markers),其中n=1~15(任选)
① APPn长度(length)
② 由於详细音讯(application specific information)
(4) 一个或者多个量化表DQT(difine quantization table)
① 量化表长度(quantization table length)
② 量化表数目(quantization table number)
③ 量化表(quantization table)
(5) 帧图像初步SOF0(Start of Frame)
① 帧早先长度(start of frame length)
② 精度(precision),每个顔色分量每个图元的位元数(bits per pixel per color
component)
③ 图像中度(image height)
④ 图像宽度(image width)
⑤ 顔色分量数(number of color components)
⑥ 对各样顔色分量(for each component)
o        ID
o        垂直方向的范本因数(vertical sample factor)
o        水平方向的样本因数(horizontal sample factor)
o        量化表号(quantization table#)
(6) 一个要么多少个霍夫曼表DHT(Difine Huffman Table)
① 霍夫曼表的尺寸(Huffman table length)
② 类型、AC或者DC(Type, AC or DC)
③ 索引(Index)
④ 位表(bits table)
⑤ 值表(value table)
(7) 扫描初始SOS(Start of Scan)
① 扫描初阶长度(start of scan length)
② 顔色分量数(number of color components)
③ 每个顔色分量
o        ID
o        互换全面表号(AC table #)
o        直流周到表号(DC table #)
④ 压缩图像资料(compressed image data)
(8) 图像甘休EOI(End of Image)
表6-06象征了APP0域的详实结构。有趣味的读者可由此UltraEdit或者PC TOOLS等工具软体打开一个JPG图像文件,对APP0的结构举行辨析和验证。
表6-06 JFIF格式中APP0域的事无巨细结构
偏移        长度        内容        块的称号        表明
0        2 byte        0xFFD8        (Start of Image,SOI)        图像先河
2        2 byte        0xFFE0        APP0(JFIF application
segment)        JFIF应用材料块
4        2 bytes                 length of APP0 block       
APP0块的长度
6        5 bytes                 “JFIF”+”0”        识别APP0标记
11        1 byte                         主要版本号(如版本1.02中的1)
12        1 byte                         次要版本号(如版本1.02中的02)
13        1 byte                  and Y densities>       
X和Y的密度单位
units=0:无单位
units=1:点数/英寸
units=2:点数/厘米
14        2 bytes                         水平方向图元密度
16        2 bytes                         垂直方向图元密度
18        1 byte                         缩略图水平图元数目
19        1 byte                         缩略图垂直图元数目
         3n                 < Thumbnail RGB
bitmap>        缩略RGB点阵图(n爲缩略图的图元数)
                           Optional JFIF extension APP0 marker
segment(s)        任选的JFIF扩展APP0标记段
         ……                 ……         
         2 byte       
0xFFD9        (EOI) end-of-file        图像文件截至标记

////////////////////////////////////////////////////

jpg格式分析

 

偏移

长度

内容

块的名称

说明

0

2 byte

0xFFD8

(Start of Image,SOI)

图像开始

2

2 byte

0xFFE0

APP0(JFIF application segment)

JFIF应用数据块

4

2 bytes

 

length of APP0 block

APP0块的长度

6

5 bytes

 

"JFIF"+"0"

识别APP0标记

11

1 byte

 

<Major version>

主要版本号(如版本1.02中的1)

12

1 byte

 

<Minor version>

次要版本号(如版本1.02中的02)

13

1 byte

 

<Units for the X
and Y densities>

X和Y的密度单位

units=0:无单位

units=1:点数/英寸

units=2:点数/厘米

14

2 bytes

 

<Xdensity>

水平方向像素密度

16

2 bytes

 

<Ydensity>

垂直方向像素密度

18

1 byte

 

<Xthumbnail>

缩略图水平像素数目

19

1 byte

 

<Ythumbnail>

缩略图垂直像素数目

 

3n

 

< Thumbnail RGB bitmap>

缩略RGB位图(n为缩略图的像素数)

 

 

 

Optional JFIF extension APP0 marker segment(s)

任选的JFIF扩展APP0标记段

 

……

 

……

 

 

2 byte

0xFFD9

(EOI) end-of-file

图像文件结束标记

下表表示了APP0域的详细结构。有趣味可经过UltraEdit或者PC TOOLS等工具软件打开一个JPG图像文件,对APP0的协会举行剖析和表明。

 

相关文章