PNG圖片格式詳解


2-2 PNG圖片格式詳解

 

1. PNG格式文件簡介

 

PNG(Portable Network Graphics,便攜式網絡圖形),是一種采用無損壓縮算法的位圖格式。其設計目的是試圖替代GIF和TIFF文件格式,同時增加一些GIF文件格式所不具備的特性。一般應用於JAVA程序、網頁或S60程序中,原因是它壓縮比高,生成文件體積小。

 

 

2. PNG文件結構詳解

 

PNG圖像格式文件由以下結構組成:

  • 文件頭/文件署名域:一個8字節的PNG文件署名域(即文件頭)

  • 數據塊:按照特定結構組織的3個以上的數據塊組成

 

2.1 文件署名域

實際上就是PNG文件的文件頭。PNG用8字節的文件署名域來識別該文件是不是PNG文件。

文件頭/文件署名域:89 50 4e 47 0d 0a 1a 0a

 

2.2 數據塊

 

2.2.1 數據塊結構:

PNG文件中,每個數據塊由4個部分組成,如下:

名稱 字節數 說明
Length (長度) 4字節 指定數據塊中數據域的長度,其長度不超過(231-1)字節
Chunk Type Code (數據塊類型碼) 4字節 數據塊類型碼由ASCII字母(A-Z和a-z)組成
Chunk Data (數據塊數據) 可變長度 存儲按照Chunk Type Code指定的數據
CRC (循環冗余檢測) 4字節 存儲用來檢測是否有錯誤的循環冗余碼

 

2.2.2 數據塊類型:

PNG定義了兩種類型的數據塊:一種是稱為關鍵數據塊(必需的數據塊),另一種是輔助數據塊(可選的數據塊)。

關鍵數據塊定義了4個標准數據塊,每個PNG文件都必須包含它們,PNG讀寫軟件也都必須要支持這些數據塊。

1. 關鍵數據塊:

  • IHD:文件頭數據塊。它包含有PNG文件中存儲的圖像數據的基本信息,並要作為第一個數據塊出現在PNG數據流中,而且一個PNG數據流中只能有一個文件頭數據塊。

  • PLTE:調色板數據塊。對於索引圖像來說,調色板信息是必須的,它包含有與索引彩色圖像相關的彩色變換數據,而且要放在圖像數據塊IDAT之前。

  • IDAT:圖像數據塊。它存儲實際的數據,在數據流中可包含多個連續順序的圖像數據塊。IDAT存放着圖像真正的數據信息,因此,如果能夠了解IDAT的結構,我們就可以很方便的生成PNG圖像。

  • IEND:圖像結束數據。用來標記PNG文件或者數據流已經結束,必須要放在文件的尾部。

2. 輔助數據塊:

比較雜,不需要全部了解透。PNG文件格式規范制定的10個輔助數據塊是:

  1. bKGD:背景顏色數據塊。

  2. cHRM:基色和白色度數據塊。

  3. gAMA:圖像γ數據塊。

  4. hIST:圖像直方圖數據塊。

  5. pHYs:物理像素尺寸數據塊。

  6. sBIT:樣本有效位數據塊。

  7. tEXt:文本信息數據塊。

  8. tIME :圖像最后修改時間數據塊。

  9. tRNS:圖像透明數據塊。

  10. zTXt :壓縮文本數據塊。


免責聲明!

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



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