PNG格式

PNG是20世紀90年代中期開始開發的圖像文件存儲格式,其目的是企圖替代GIF和TIFF文件格式,同時增長一些GIF文件格式所不具有的特性。流式網絡圖形格式(Portable Network Graphic Format,PNG)名稱來源於非官方的「PNG's Not GIF」,是一種位圖文件(bitmap file)存儲格式,讀成「ping」。PNG用來存儲灰度圖像時,灰度圖像的深度可多到16位,存儲彩色圖像時,彩色圖像的深度可多到48位,而且還可存儲多到16位的α通道數據。PNG使用從LZ77派生的無損數據壓縮算法。算法

PNG文件格式保留GIF文件格式的下列特性:網絡

  1. 使用彩色查找表或者叫作調色板可支持256種顏色的彩色圖像。
  2. 流式讀/寫性能(streamability):圖像文件格式容許連續讀出和寫入圖像數據,這個特性很適合於在通訊過程當中生成和顯示圖像。
  3. 逐次逼近顯示(progressive display):這種特性可以使在通訊鏈路上傳輸圖像文件的同時就在終端上顯示圖像,把整個輪廓顯示出來以後逐步顯示圖像的細節,也就是先用低分辨率顯示圖像,而後逐步提升它的分辨率。
  4. 透明性(transparency):這個性能可以使圖像中某些部分不顯示出來,用來建立一些有特點的圖像。
  5. 輔助信息(ancillary information):這個特性可用來在圖像文件中存儲一些文本註釋信息。
  6. 獨立於計算機軟硬件環境。
  7. 使用無損壓縮。

PNG文件格式中要增長下列GIF文件格式所沒有的特性:工具

  1. 每一個像素爲48位的真彩色圖像。
  2. 每一個像素爲16位的灰度圖像。
  3. 可爲灰度圖和真彩色圖添加α通道。
  4. 添加圖像的γ信息。
  5. 使用循環冗餘碼(cyclic redundancy code,CRC)檢測損害的文件。
  6. 加快圖像顯示的逐次逼近顯示方式。
  7. 標準的讀/寫工具包。
  8. 可在一個文件中存儲多幅圖像。

文件結構性能

PNG圖像格式文件(或者稱爲數據流)由一個8字節的PNG文件署名(PNG file signature)域和按照特定結構組織的3個以上的數據塊(chunk)組成。編碼

PNG定義了兩種類型的數據塊,一種是稱爲關鍵數據塊(critical chunk),這是標準的數據塊,另外一種叫作輔助數據塊(ancillary chunks),這是可選的數據塊。關鍵數據塊定義了4個標準數據塊,每一個PNG文件都必須包含它們,PNG讀寫軟件也都必需要支持這些數據塊。雖然PNG文件規範沒有要求PNG編譯碼器對可選數據塊進行編碼和譯碼,但規範提倡支持可選數據塊。spa

(1) PNG文件署名域orm

8字節的PNG文件署名域用來識別該文件是否是PNG文件。該域的值是:索引

十進制數 137 80 78 71 13 10 26 10
十六進制數 89 50 4e 47 0d 0a 1a 0a

 

(2) 數據塊的結構ip

每一個數據塊都由表6-07所示的的4個域組成。ci

表6-07 PNG文件數據塊的結構

名稱

字節數

說明

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

 

在表6-07中,CRC(cyclic redundancy check)域中的值是對Chunk Type Code域和Chunk Data域中的數據進行計算獲得的。CRC具體算法定義在ISO 3309和ITU-T V.42中,其值按下面的CRC碼生成多項式進行計算:

x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1

數據塊結構

1. 關鍵數據塊

關鍵數據塊中的4個標準數據塊是:

(1) 文件頭數據塊IHDR(header chunk):它包含有PNG文件中存儲的圖像數據的基本信息,並要做爲第一個數據塊出如今PNG數據流中,並且一個PNG數據流中只能有一個文件頭數據塊。

文件頭數據塊由13字節組成,它的格式如表6-08所示。

表6-08 PNG文件頭鍵數據塊的結構

域的名稱

字節數

說明

Width 4 bytes 圖像寬度,以像素爲單位
Height 4 bytes 圖像高度,以像素爲單位
Bit depth 1 byte 圖像深度:
索引彩色圖像:1,2,4或8
灰度圖像:1,2,4,8或16
真彩色圖像:8或16
ColorType 1 byte 顏色類型:
0:灰度圖像, 1,2,4,8或16
2:真彩色圖像,8或16
3:索引彩色圖像,1,2,4或8

4:帶α通道數據的灰度圖像,8或16
6:帶α通道數據的真彩色圖像,8或16

Compression method 1 byte 壓縮方法(LZ77派生算法)
Filter method 1 byte 濾波器方法
Interlace method 1 byte 隔行掃描方法:

0:非隔行掃描

1: Adam7(由Adam M. Costello開發的7 
遍隔行掃描方法)

 

(2) 調色板數據塊PLTE(palette chunk):它包含有與索引彩色圖像((indexed-color image))相關的彩色變換數據,它僅與索引彩色圖像有關,並且要放在圖像數據塊(image data chunk)以前。真彩色的PNG數據流也能夠有調色板數據塊,目的是便於非真彩色顯示程序用它來量化圖像數據,從而顯示該圖像。調色板數據塊結構如表6-09所示。

表6-09 調色板數據塊結構

域的名稱

字節數

說明

Red 1 byte 0 = 黑,255 = 紅
Green ">

0 = 黑,255 = 綠

Blue 1 byte 0 = 黑,255 = 藍

 

調色板實際是一個彩色索引查找表,它的表項數目能夠是1~256中的一個數,每一個表項有3字節,所以調色板數據塊所包含的最大字節數爲768。

(3) 圖像數據塊IDAT(image data chunk):它存儲實際的數據,在數據流中可包含多個連續順序的圖像數據塊。

(4) 圖像結束數據IEND(image trailer chunk):它用來標記PNG文件或者數據流已經結束,而且必需要放在文件的尾部。

除了表示數據塊開始的IHDR必須放在最前面, 表示PNG文件結束的IEND數據塊放在最後面以外,其餘數據塊的存放順序沒有限制。

2. 輔助數據塊

PNG文件格式規範制定的10個輔助數據塊是:

(1) 背景顏色數據塊bKGD(background color)。

(2) 基色和白色度數據塊cHRM(primary chromaticities and white point)。所謂白色度是指當R=G=B=最大值時在顯示器上產生的白色度。

(3) 圖像γ數據塊gAMA(image gamma)。

(4) 圖像直方圖數據塊hIST(image histogram)。

(5) 物理像素尺寸數據塊pHYs(physical pixel dimensions)。

(6) 樣本有效位數據塊sBIT(significant bits)。

(7) 文本信息數據塊tEXt(textual data)。

(8) 圖像最後修改時間數據塊tIME (image last-modification time)。

(9) 圖像透明數據塊tRNS (transparency)。

(10) 壓縮文本數據塊zTXt (compressed textual data)。

3. 數據塊摘要

關鍵數據塊、輔助數據塊和專用公共數據塊(special-purpose public chunks)綜合在表6-10中。

表6-10 PNG文件格式中的數據塊

數據塊符號

數據塊名稱

多數據塊

可選否

位置限制

IHDR 文件頭數據塊

第一塊
cHRM 基色和白色點數據塊

在PLTE和IDAT以前
gAMA 圖像γ數據塊

在PLTE和IDAT以前
sBIT 樣本有效位數據塊

在PLTE和IDAT以前
PLTE 調色板數據塊

在IDAT以前
bKGD 背景顏色數據塊

在PLTE以後IDAT以前
hIST 圖像直方圖數據塊

在PLTE以後IDAT以前
tRNS 圖像透明數據塊

在PLTE以後IDAT以前
oFFs (專用公共數據塊)

在IDAT以前
pHYs 物理像素尺寸數據塊

在IDAT以前
sCAL (專用公共數據塊)

在IDAT以前
IDAT 圖像數據塊

與其餘IDAT連續
tIME 圖像最後修改時間數據塊

無限制
tEXt 文本信息數據塊

無限制
zTXt 壓縮文本數據塊

無限制
fRAc (專用公共數據塊)

無限制
gIFg (專用公共數據塊)

無限制
gIFt (專用公共數據塊)

無限制
gIFx (專用公共數據塊)

無限制
IEND 圖像結束數據

最後一個數據塊

 

tEXt和zTXt數據塊中的標準關鍵字:

Title

圖像名稱或者標題

Author

圖像做者名

Description

圖像說明

Copyright

版權聲明

CreationTime

原圖創做時間

Software

創做圖像使用的軟件

Disclaimer

棄權

Warning

圖像內容警告

Source

創做圖像使用的設備

Comment

各類註釋

相關文章
相關標籤/搜索