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之前。
-
-
IEND:圖像結束數據。用來標記PNG文件或者數據流已經結束,必須要放在文件的尾部。
2. 輔助數據塊:
比較雜,不需要全部了解透。PNG文件格式規范制定的10個輔助數據塊是:
-
bKGD:背景顏色數據塊。
-
cHRM:基色和白色度數據塊。
-
gAMA:圖像γ數據塊。
-
hIST:圖像直方圖數據塊。
-
pHYs:物理像素尺寸數據塊。
-
sBIT:樣本有效位數據塊。
-
tEXt:文本信息數據塊。
-
tIME :圖像最后修改時間數據塊。
-
tRNS:圖像透明數據塊。
-