收藏
0有用+1
0

JPEG文件交换格式

图像文件格式标准
同义词jfif(JPEG文件交换格式的缩写形式)一般指JPEG文件交换格式
JPEG文件交换格式(JPEG File Interchange Format,JFIF)是一个图像文件格式标准。它是一种交换匹配JPEG交换格式(JIF)标准的JPEG编码文件的格式。它解决了JIF在简单JPEG编码文件交换方面的一些限制。与所有匹配JIF的文件一样,JFIF文件中的图像数据使用JPEG标准的技术压缩,因此JFIF有时被称为“JPEG/JFIF”。
中文名
JPEG文件交换格式
外文名
JPEG File Interchange Format, JFIF
所属学科
IT
应用领域
图像处理

历史

播报
编辑
该标准于1991年3月1日朽樱辨在C-Cube Microsystems的一个涉及许多公司代表的会议上创建,这些公司包括:C-Cube Microsystems、Radius、NeXT、Stor肯兆茅射m Tech、尝循趋PD JPEG小组、Sun和Handmade软件。该标骗乎准似乎已失去了所有人,因为C-Cube Microsystems已停产,该标准的进一步发展已停滞。最新版本为v1.02,发布于1992年9月1淋旬捉日。
JFIF已标准化为ISO/IEC 10918-5:2钻只影013,ITU-TT.871和Ecma InternationalTR/98。
1996年,RFC2046指定了在互联网上传输删婚JPEG图像的图形格式应使用JFIF。互联网媒体型“ima应漏棵ge/jpeg”必须编码为JFIF。但在具体实践中,几乎所有互联网软件都可以解码任何使用Y或YCbCr组件的JIF图像,无论其是否兼容JFIF。

目的

播报
编辑
JFIF定义了JPEG Part1标准(ISO/IECIS 10918-1,ITU-T建议书T.81)中未指定的许多细节:
组件样本注册
JPEG允许多个组件(例如YCbCr)有不同的分辨率,但它没有定义不同的样本数组应该如何对齐。JFIF标准要求样本定位“色度抽样”,这使解码器可以将每个组件数组视为等大小矩形的像素中心点的采样表示,并且每个阵列与图像有相同的外部边界。这对于计算机很方便,但对齐没有在MPEG-2及许多视频应用程序中使用 [1]
分辨率和宽高比
JPEG标准不包括对图像分辨率或宽高比进行编码的任何方法。JFIF提供了一个通过JPEG扩展-应用程序段提供分辨率或宽高比信息的方式。它使用应用程序段#0(Application Segment #0),段头“JFIF\x00”,并规定这必须是文件中的第一个段,从而使识别JFIF文件更简单。数码相机记录的EXIF通常不包含该段,但在其他方面通常匹配JFIF标准 [2]
色彩空间
JPEG没有定义图像使用哪个色彩空间。JFIF定义了使用的色彩模式:无论Y=灰度,或者CCIR 601定义的YCbCr。因为这不是一个绝对色彩空间——除非已提供并解释一个ICC配置文件、色彩空间元数据或sRGB标签,解码的JFIF图像将依赖于设备的RGB色彩空间。因此,JFIF本身不提供在互联网上精确传输经色彩管理的图像的机制。

结构

播报
编辑
JFIF文件由一系列标记(marker)或标记段(marker segments)组成。标记在JPEG标准的第一部分中定义。每个标记由两个字节组成:一个FF字节后跟一个不等于00或FF的字节,并指定标记的类型。一些标记是独立的,但大多数“标记段开始”的标示包含按以下模式的数据字节:
FFxxs1s2数据字节
字节s1和s2一同表示一个大端16位整数,指定之后“数据字节”的长度加上用于表示长度的2个字节。换句话说,s1和s2指定了之后的数据字节数量为:256 *s1+s2- 2。
根据JPEG标准第一部分,应用程序可以使用APP标记和定义应用程序指定的特定含义数据。JFIF标准中定义了下列APP标记段:
JFIF APP0标记段(JFIF短标记)(强制性)
JFIF扩展APP0标记段(JFXX短标记)(可选)
它们的描述如下:
JFIF标准需要JFIF APP0标记段必须紧随SOI标记。如果一个JFIF扩展APP0标记段被使用,它必须紧随JFIF APP0标记段。因此一个JFIF文件将具有下列结构:
JFIF文件结构
代码
描述
SOI
FF D8
图像开始(Start of Image)
JFIF-APP0
FF E0s1s24A 46 49 46 00 ...
见下
JFXX-APP0
FF E0s1s24A 46 58 58 00 ...
可选,见下
… 额外标记段
(例如SOF、DHT、COM)
SOS
FF DA
扫描开始(Start of Scan)
压缩的图像数据
EOI
FF D9
图像结束(End of Image)
JFIF APP0标记段
在强制性JFIF APP0标记段中指定图像的参数。可选嵌入未压缩的缩略图。
JFIF APP0标记段
字段 大小 (字节) 描述
APP0标记 2 FF E0
长度 2 APP0段外的段长度
标识符 5 4A 46 49 46 00= “JFIF”的ASCII代码,以空字节终止
JFIF版本 2 第一个字节为主版本,第二个字节为次要版本(01 02表示1.02)
密度单位 1 下列像素密度字段的单位
00:无单位; width:height像素宽高比 = Xdensity:Ydensity
01:每英寸像素(2.54厘米)
02:每厘米像素
Xdensity 2 水平像素密度。不得为零。
Ydensity 2 垂直像素密度。不得为零。
Xthumbnail 1 嵌入的RGB缩略图的水平像素数。可以为零。
Ythumbnail 1 嵌入的RGB缩略图的垂直像素数。可以为零。
缩略图数据 3 ×n 未压缩的24位RGB(每个颜色通道8位)光栅缩略图数据,顺序为R0、G0、 B0、...Rn、Gn、Bn;其中“n” = Xthumbnail × Ythumbnail。
JFIF扩展APP0标记段
紧随JFIF APP0标记段的可能是JFIF扩展APP0标记段。此段可能仅存在于JFIF 1.02及更高版本。它允许以3种不同的格式嵌入缩略图。
JFIF扩展APP0标记段
字段 大小(字节) 描述
APP0标记 2 FF E0
长度 2 不包括APP0标记的段长度
标识符 5 4A 46 58 58 00= “JFIF”的ASCII代码,以空字节终止
缩略图格式 1 指定用于以下嵌入缩略图的数据格式:
11:每个像素1字节调色格式
13:每个像素3字节RGB格式
缩略图数据 可变 取决于缩略图格式。见下
缩略图数据取决于缩略图格式,如下所示:
使用JPEG编码存储的缩略图
字段 大小(字节) 描述
SOI 2 FF D8
可变 必须为使用YCbCr或仅Y的JIF格式,并且必须不包含JFIF或JFXX段。
EOI 2 FF D9
每个像素使用一个字节存储的缩略图
字段 大小(字节) 描述
Xthumbnail 1 以下嵌入缩略图的水平像素数。不得为零。
Ythumbnail 1 以下嵌入缩略图的垂直像素数。不得为零。
缩略图调色板 768 256个调色板条目,每个条目包含24位RGB颜色值。
缩略图数据 n 每个像素一个字节,包含调色板中颜色的索引,
其中n= Xthumbnail × Ythumbnail。
每个像素使用三个字节存储的缩略图
字段大小(字节)描述
Xthumbnail 1 以下嵌入缩略图的水平像素数。不得为零。
Ythumbnail 1 以下嵌入缩略图的垂直像素数。不得为零。
缩略图数据 3 ×n 未压缩的24位RGB(每个颜色通道8位)光栅缩略图数据,顺序为R0、G0、B0、...Rn、Gn、Bn;其中“n” = Xthumbnail × Ythumbnail。

兼容性

播报
编辑
较新的EXIF与JFIF兼容,但这两个标准互不兼容。这是因为这两个标准都规定了它们特定的应用程序段(JFIF为APP0,Exif为APP1)必须紧随SOI标记。在实践中,许多程序和数码相机生成包括两个应用程序段的文件。这不会影响大多数解码器的图像解码,但设计不良的JFIF或Exif解析器可能无法正确识别文件。
JFIF与AdobeAdobe Photoshop的JPEG“信息资源块”扩展和IPTC信息交换模型元数据兼容,因为JFIF不排除其他应用程序段,并且Photoshop扩展不要求它在文件中的第一个段。但是,Photoshop一般将CMYK缓冲区保存为四组元“Adobe JPEGs”,这不匹配JFIF。由于这些文件不是YCbCr色彩空间,它们不能被很多网页浏览器或其他互联网软件解码 [3]