图片存储格式之一,由JPEG格式衍生而来,后缀为".jfif"。
JPEG本身只有描述如何将一个图像转换为字节的数据串流(streaming),但并没有说明这些字节如何在任何特定的储存媒体上被封存起来。一个由独立JPEG小组(Independent JPEG Group)所建立的额外标准,称为JFIF(JPEG File Interchange Format,JPEG档案交换格式),详细说明如何从一个JPEG串流,产出一个适合于电脑储存和传输(像是在因特网上)的档案。当有人称呼一个"JPEG档案",一般而言他是意指一个JFIF档案,或有时候是一个Exif JPEG档案。然而,也有其他以JPEG为基础的档案格式,像是JNG。
JPEG/JFIF是最普遍在万维网(World Wide Web)上被用来储存和传输图片的格式。它并不适合于线条绘图(drawing)和其他文字或图示(iconic)的图形,因为它的压缩方法用在这些图形的型态上,会得到不适当的结果(PNG和GIF格式通常是用来针对这种目的之图形;GIF每一像素只有8位元,并不很适合于用在彩色照片,PNG可以被用来无失真地储存照片,但是档案太大让它不适合在网页上放照片)。
对于JFIF的MIME媒体型态是image/jpeg(定义在RFC 1341)。
一.简介
微处理机中的数据存放顺序有大端(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文件使用的颜色空间是YCbCr空间。在JFIF文件格式中,图像样本的存放顺序是从左到右和从上到下。这就是说JFIF文件中的第一个图像样本是图像左上角的样本。
二.文件结构
JFIF文件格式直接使用JPEG标准为应用程序定义的许多标记,因此JFIF格式成了事实上JPEG文件交换格式标准。JPEG的每个标记都是由2个字节组成,其前一个字节是固定值0xFF。每个标记之前还可以添加数目不限的0xFF填充字节(fill byte)。下面是其中的8个标记:
SOI 0xD8图像开始
APP0 0xE0JFIF应用数据块
APPn 0xE1 - 0xEF其他的应用数据块(n, 1~15)
DQT 0xDB量化表
SOF0 0xC0帧开始
DHT 0xC4霍夫曼(Huffman)表
SOS 0xDA扫描线开始
EOI 0xD9图像结束
一般的JFIF文件由下面的9个部分组成:
( 1 ) 图像开始SOI(Start of Image)标记 0h 2字节 0xFFD8
( 2 ) APP0标记(Marker) 0h 2字节 0xFFE0
( 3 ) APPn标记(Markers)
( 4 ) 一个或者多个量化表DQT(Difine Quantization Table) 0h 2字节 0xFFDB
( 5 ) 帧图像开始SOF0(Start of Frame)
( 6 ) 一个或者多个霍夫曼表DHT(Difine Huffman Table)
( 7 ) 定义重新开始间隔DRI(Difine Restart Interval)
( 8 ) 扫描开始SOS(Start of Scan)
( 9 ) 图像结束EOI(End of Image)