複製鏈接
請複製以下鏈接發送給好友

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
應用領域
圖像處理

目錄

JPEG文件交換格式歷史

該標準於1991年3月1日在C-Cube Microsystems的一個涉及許多公司代表的會議上創建,這些公司包括:C-Cube Microsystems、Radius、NeXT、Storm Tech、PD JPEG小組、Sun和Handmade軟件。該標準似乎已失去了所有人,因為C-Cube Microsystems已停產,該標準的進一步發展已停滯。最新版本為v1.02,發佈於1992年9月1日。
JFIF已標準化為ISO/IEC 10918-5:2013,ITU-TT.871和Ecma InternationalTR/98。
1996年,RFC2046指定了在互聯網上傳輸JPEG圖像的圖形格式應使用JFIF。互聯網媒體型“image/jpeg”必須編碼為JFIF。但在具體實踐中,幾乎所有互聯網軟件都可以解碼任何使用Y或YCbCr組件的JIF圖像,無論其是否兼容JFIF。

JPEG文件交換格式目的

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本身不提供在互聯網上精確傳輸經色彩管理的圖像的機制。

JPEG文件交換格式結構

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。

JPEG文件交換格式兼容性

較新的EXIF與JFIF兼容,但這兩個標準互不兼容。這是因為這兩個標準都規定了它們特定的應用程序段(JFIF為APP0,Exif為APP1)必須緊隨SOI標記。在實踐中,許多程序和數碼相機生成包括兩個應用程序段的文件。這不會影響大多數解碼器的圖像解碼,但設計不良的JFIF或Exif解析器可能無法正確識別文件。
JFIF與AdobeAdobe Photoshop的JPEG“信息資源塊”擴展和IPTC信息交換模型元數據兼容,因為JFIF不排除其他應用程序段,並且Photoshop擴展不要求它在文件中的第一個段。但是,Photoshop一般將CMYK緩衝區保存為四組元“Adobe JPEGs”,這不匹配JFIF。由於這些文件不是YCbCr色彩空間,它們不能被很多網頁瀏覽器或其他互聯網軟件解碼 [3] 
參考資料