JPEG圖片格式詳解


2-1 JPEG圖片格式詳解

 

1. JPEG格式文件簡介

 

JPEG(Joint Photographic Experts Group,聯合圖像專家小組),是一種常用的圖像存儲格式, jpg/jpeg是24位的圖像文件格式,也是一種高效率的壓縮格式,是面向連續色調靜止圖像的一種壓縮標准。同樣一幅畫面,用.jpg/.jpeg格式儲存的文件是其他類型圖形文件的1 /10~1/20。一般情況下,.jpg/.jpeg文件只有幾十KB,而色彩數最高卻可達到24位,所以它被廣泛運用在Internet上,以節約寶貴的網絡傳輸資源。

 

1.1 拓展名.jpg與.jpeg

JPEG的文件格式一般有兩種文件擴展名:.jpg和.jpeg,這兩種擴展名的實質是相同的,我們可以把.jpg的文件改名為.jpeg,而對文件本身不會有任何影響。嚴格來講,JPEG的文件擴展名應該為.jpeg,由於DOS時代的8.3文件名命名原則,就使用了.jpg的擴展名,這種情況類似於.htm和.html的區別。

 

1.2 JPEG的三種格式

JPEG格式可以分為:標准JPEG、漸進式JPEG 和 JPEG2000三種格式。

  • 標准JPEG:

該類型的圖片文件,在網絡上應用較多,只有圖片完全被加載和讀取完畢之后,才能看到圖片的全貌;它是一種很靈活的圖片壓縮方式,用戶可以在壓縮比和圖片品質之間進行權衡。不過通常來講,其壓縮比在10:1到40:1之間,壓縮比越大,品質就越差,壓縮比越小,品質就越好。

  • 漸進式JPEG:

該類型的圖片是對標准JPEG格式的改進,當在網頁上下載漸進式JPEG圖片時,首先呈現圖片的大概外貌,然后再逐漸呈現具體的細節部分,因而被稱之為漸進式JPEG。

  • JPEG2002:

一種全新的圖片壓縮發,壓縮品質更好,並且改善了無線傳輸時,因信號不穩定而造成的馬賽克及位置錯亂等問題。另外,作為JPEG的升級版,JPEG2000的壓縮率比標准JPEG高約30%,同時支持有損壓縮和無損壓縮。它還支持漸進式傳輸,即先傳輸圖片的粗略輪廓,然后,逐步傳輸細節數據,使得圖片由模糊到清晰逐步顯示。

 

 

2. JPEG文件結構詳解

 

2.1 JPEG圖片格式組成部分

JPEG格式的文件是分為一個一個的段來存儲的,段的多少和長度並不是一定的。只要包含了足夠的信息,該JPEG文件就能夠被打開,呈現給人們。但JPEG文件的每個段都一定包含兩部分:

1. 段的標識與類型。它由兩個字節構成:第一個字節是段標識0xFF,第二個字節是段類型(對於不同的段是不同的),具體如以下表:

段類型   表示符號      說明
——————————————————————————————————
SOI     D8         文件頭

APP0     E0         定義交換格式和圖像識別信息
APP1     E1 同上
....   ....         ....
APPn     En 同上

DQT     DB         定義量化表

SOF0     C0         圖像基本信息
SOF1     C1         同上
....   ....         ....
SOFn     Cn         同上

DHT     C4         定義 Huffman 表(霍夫曼表)
DRI     DD         定義重新開始間隔
SOS     DA         掃描行開始
COM     FE         注釋
EOI     D9         文件尾
......

2. 段的長度。緊接着的兩個字節存放的是這個段的長度(除了前面的兩個字節0xFF和0xXX,X表示不確定。他們是不算到段的長度中的)。其作用是這樣的話如果一個程序不認識JPEG文件某個段,它就可以讀取后兩個字節,得到這個段的長度,並跳過忽略它。

注意:這個長度的表示方法並不是按照傳統intel的方法(低位在前,高位在后,即逆序),而是按照高位在前,低位在后的。比方說一個段的長度是0x12AB,那么它會按照0x12,0xAB的順序存儲。但是如果按照Intel的方式:高位在后,低位在前的方式會存儲成0xAB,0x12,而這樣的存儲方法對於JPEG是不對的。

 

綜上,以下是jpeg圖片的段的一般結構:

-----------------------------------------------------------------
名稱   字節數    數據     說明
-----------------------------------------------------------------
段標識   1       FF      每個新段的開始標識
段類型   1               段類型編碼(稱作“標記碼”)
段長度   2               包括段內容和段長度本身,不包括段標識和段類型
段內容   ≤65533字節                

 

注意:

  1. 有些段沒有長度描述也沒有內容,只有段標識和段類型。文件頭和文件尾均屬於這種段。

  2. 段與段之間無論有多少FF都是合法的,這些FF稱為“填充字節”,必須被忽略掉。

 

2.2 段類型

段類型有30種,以下列出幾種必須的或常見的 JPEG文件段類型。

  1. SOI(必須):SOI段定義了文件頭。該段僅有兩個字節:FF D8,這兩個字節代表了JPEG文件的開始。

  2. APP0, APP1, APP2....(必須):APP0段定義了交換格式和圖像識別信息。包含了一些像素和略縮圖相關的信息。

  3. DQT(必須):DQT段定義了量化表。JPEG文件一般有兩個DQT段,為亮度定義1個, 為色度定義1個。

  4. SOF0, SOF1, SOF2....(必須):SOF段定義了圖像基本信息。包含了一些圖片長寬高、組件等信息。

  5. DHT(必須) :DHT段定義了Huffman表,即霍夫曼編碼表。

  6. DRI(非必須):DRI段定義了重新開始間隔,很多JPEG文件沒有這個段。

  7. SOS(必須):SOS段定義了掃描行開始,緊接着SOS段后的就是一個個掃描行(壓縮的圖像數據)。

  8. COM(非必須):COM段定義了注釋段,有的JPEG文件沒有這個段。

  9. EOI(必須):EOI段定義了文件尾,該段僅有兩個字節:FF D9,這兩個字節代表了JPEG文件的結束。

  10.  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM