JPEG格式
格式:JFIF(JPEG档的交换格式)
压缩:JPEG(灰阶影像压缩比约为10:1;彩色影像约为20:1)
以JPEG文件格式保存的图像实际上是2个不同格式的混合物:JPEG格式规范本身,用来定义图像的压缩方法,并且被包在定议分辨率和颜色模式的图像数据格式之中。Photoshop和实际上每个能读取和写入JPEG文件格式的其他应用程序,以 JFIF文件格式(JPEG文件交换格式, JPEG File Interchonge Format)或与JFIF格式非常象的其他格式保存图像数据。JFIF文件格式只是将一种图像格或环绕JPEG压缩的一种简单方法,它们没有其他的更多功能。
最初的JFIF文件格式规范史允许8位灰度图像和24位RGB图像;但是Adobe『修改」了此种格式,使之也能处理32位CMYK模式的数据。但是,多数版面设计应用程序实际上不能将 CMYK模式的JPEG图像分离开,所以 Adobe所做的这个修改的意义并不大。JPEG文件格式允许用可变压缩的方法,保存8位、24位、32位深度的图像。例如,当以JPEG格式保存一幅 Photoshop图像时,Photoshop给出了多种保存选项:低压缩率,中等压缩率,高压缩率及最好的分辨率等级别。实验证明,当进行印刷或在显示器上观察时,JPEG一般可将图像压缩为原大小的十分之一而看不出明显差异。图像会分解成8×8像素图像单元的小方块。这种JPEG失真有时会在新闻图片中发现,这些图片在进行电子传输前被大大地压缩了,随後又以高放大倍率进行了印刷。
JPEG使用了有损压缩格式,这就使它成为迅速显示图像并保存较好分辨率的理想格式。也正是由於JPEG格式可以对扫描或自然图像进行大幅度的压缩,利於储存或通过调制解调器进行传送,所以在Internet上得到了广泛的应用。
JPEG格式有一个特殊的变种,名为 「Progressive JPEG」。在创建Progressive JPEG 文件肘,数据是这样安排的:在装入图像时,开始只显示一个模糊的图像,随着数据的装入,图像逐步变得清晰。
JPEG格式的主要不足之处也正是它的最大优点。也就是说,有损压缩算法将JPEG只局限於显示格式,而且每次保存JPEG格式的图像时都会丢失一些数据。因此,通常只在创作的最後阶段以JPEG格式保存一次图像即可。
JPEG简介
微处理机中的存放顺序有正序(big endian)和逆序(little endian)之分。正序存放就是高位元组存放在前低位元组在後,而逆序存放就是低位元组在前高位元组在後。例如,十六进位数爲A02B,正序存放就是A02B,逆序存放就是2BA0。摩托罗拉(Motorola)公司的微处理器使用正序存放,而英代尔(Intel)公司的微处理器使用逆序。JPEG文件中的位元组是按照正序排列的。
________________________________________
JPEG委员会在制定JPEG标准时,定义了许多标记(marker)用来区分和识别图像资料及其相关资讯,但笔者没有找到JPEG委员会对JPEG文件交换格式的明确定义。直到1998年12月从分析网上具体的JPG图像来看,使用比较广泛的还是JPEG文件交换格式(JPEG File Interchange Format,JFIF)版本号爲1.02。这是1992年9月由在C-Cube Microsystems公司工作的Eric Hamilton提出的。此外还有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 - 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

图像文件结束标记

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.114B

Cb = -0.1687R - 0.3313G + 0.5B + 128

    Cr = 0.5R - 0.4187G - 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文件中的第一个图像样本是图像左上角的样本。

  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      图像结束

 

这里是一个很好的来源,您的所有文件格式的需求:

http://www.wotsit.org/ http://www.wotsit.org/

Just type "jpg" in the search box.只需输入“图片”的搜索框。

For fun, I looked it up myself.为了好玩,我看它自己。

byte #9: (0 based)字节# 9 : ( 0基础)
1=dots per inch 1 =每英寸点数
2=dots per cm 2 =每厘米点
otherwise, it's 1:1 with screen否则,它的屏幕1:1

byte 10,11: Horizontal pixel density字节10,11 :水平像素密度
byte 12,13: Vertical pixel density字节12,13 :垂直像素密度

I think the number are in big endian format, but the docs aren't very clear on that.我认为,在一些大Endian格式,但文件不很清楚这一点。 Testing should be easy though.测试应该很容易的。

__________________
"Science is constructed of facts as a house is of stones. But a collection of facts is no more a science than a heap of stones is a house." “科学构建的事实作为一个房子是石头。但收集的事实没有更多的科学比礧是一个房子。 ” - Henri Poincare -庞加莱

转载于:https://www.cnblogs.com/carekee/articles/2661993.html

jpg分辨率格式 jpg格式分析(转)相关推荐

  1. php table转json,html table表数据转Json格式示例代码分析

    本文为大家介绍下html table表数据转Json格式,下面有个不错的示例,大家可以参考下 代码如下: var keysArr = new Array("key0", " ...

  2. Apache combined格式的日志分析

    Apache combined格式的日志分析 今天访问http://211.100.97.250/zabbix/ 之后,查看了一看访问日志,便要看个究竟 先看一下apache配置文件中定义的日志格式: ...

  3. 新兴的多媒体格式——MXF 文件格式分析 和简介

    1.  新兴的多媒体格式 MXF格式已经被推出几年了, 从当初一个陌生的不为人们 重视的格式 逐渐获得了业内人士的认知和认可, 现如今正被广泛应用于广播电视 与后期制作领域, 且有不断扩大之势, 松下 ...

  4. 未来音乐的格式——Opus格式

    最近还在搞桌面化视频网站系统,因为播放技术才用的是html5里标签,所以经常去了解该标签支持的格式,今天发现其支持的一个音频格式Opus格式,发现这个音频格式真的会成为未来音频发展的趋势.下面我具体介 ...

  5. Oracle 默认时间格式 Date格式转换

    默认时间格式: 1.Oracle的日期格式 Oracle缺省的时间格式即时间数据的显示形式,与所使用的字符集有关.一般显示年月日,而不显示时分秒. 例如,使用us7ascii字符集(或者是其他的英语字 ...

  6. ML之FE:基于FE特征工程对RentListingInquries数据集进行预处理并导出为三种格式文件(csv格式/txt格式/libsvm稀疏txt格式)

    ML之FE:基于FE特征工程对RentListingInquries数据集进行预处理并导出为三种格式文件(csv格式/txt格式/libsvm稀疏txt格式) 目录 输出结果 设计思路 核心代码 输出 ...

  7. oracle jpg格式导出,格式记RAW,另存或导出就是JPG格式,就这么很简单

    我是踩一脚摄影,自封的摄影"自学成才"榜样,对于初学者的你来说,这里肯定有你想看的东西. 昨天从RAW格式聊到了JPG格式,今天咱们再来多聊几句JPG吧! JPG有的也写成JPEG ...

  8. 如何储存图片方法jpg格式png格式#ps教程#ps抠图

    如何储存图片方法jpg格式png格式#ps教程#ps抠图

  9. 谷歌地球倾斜模型3Dtiles格式cesium格式一键导入查看

    谷歌地球倾斜模型3Dtiles格式cesium格式一键导入查看 台湾省倾斜模型ceisum 3Dtiles格式谷歌地球谷歌地 大家好我是谷谷GIS的开发者,为大家分享一下这个台湾省的,倾斜模型3Dti ...

最新文章

  1. 实例代码分享Python实现Linux监控
  2. Android移动开发之【Android实战项目】剑走偏锋-得会导入别人的Android Studio项目!
  3. 【转】 Nginx深入详解之多进程网络模型
  4. GPU神经网络和JAVA神经网络速度对比
  5. 006 CSS三种引入方式
  6. python获取指定目录下所有文件名os.walk和os.listdir
  7. 以CSGO为例 分析不同网络延时下FPS游戏同步的实现
  8. Dart 基礎 - 4
  9. leetcode 剑指 Offer 03. 数组中重复的数字
  10. Spring 经典面试题汇总.pdf(2020版)
  11. 自学linux指令总结
  12. 使用CompletableFuture实现业务服务的异步调用实战代码
  13. java面试题干货126-170
  14. python和java哪个好学-Python和Java发展前景哪个好?老男孩python高级编程
  15. 【解决】Ubuntu安装NVIDIA驱动(咨询NVIDIA工程师的解决方案)
  16. php 验证手机号码(海外手机号)
  17. 单片机破解的常用方法及应对策略
  18. 人生路上好文章[收藏]
  19. 染色问题java_java地图路径染色寻找算法
  20. 【Python】迭代法求解非线性方程及方程组

热门文章

  1. 资讯精选|OfO和北京经信委联合开发出了全国首个电子围栏技术并在北京通州试点
  2. jquery竖向走马灯_根本不用插件,实现jQuery横/纵向走马灯
  3. 【C#】AutoMapper 使用手册
  4. 一分钟读懂:天使投资 vs. 风险投资 vs. 私募股权融资
  5. 牛逼了,这21款游戏项目,只一行代码即可上手—开玩【附源码】
  6. Web端自动化测试失败原因汇总
  7. 物联网工程大四学生眼中的“孔乙己文学”
  8. 技术部岗位职责——技术部经理
  9. html实现表格的跨行、跨列
  10. devDependencies 和 dependencies