PNG文件格式保留GIF文件格式的下列特性:
使用彩色查找表或者叫做調色板可支持256種顏色的彩色圖像。
流式讀/寫性能(streamability)
圖像文件格式允許連續讀出和寫入圖像數據,這個特性很適合於在通信過程中生成和顯示圖像。
逐次逼近顯示(progressive display)
這種特性可使在通信鏈路上傳輸圖像文件的同時就在終端上顯示圖像,把整個輪廓顯示出來之後逐步顯示圖像的細節,也就是先用低分辨率顯示圖像,然後逐步提高它的分辨率。
透明性(transparency)
這個性能可使圖像中某些部分不顯示出來,用來創建壹些有特色的圖像。
輔助信息(ancillary information)
這個特性可用來在圖像文件中存儲壹些文本註釋信息。
獨立於計算機軟硬件環境。
使用無損壓縮。
PNG文件格式中要增加下列GIF文件格式所沒有的特性:
每個像素為48位的真彩色圖像。
每個像素為16位的灰度圖像。
可為灰度圖和真彩色圖添加α通道。
添加圖像的γ信息。
使用循環冗余碼(cyclic redundancy code,CRC)檢測損害的文件。
加快圖像顯示的逐次逼近顯示方式。
標準的讀/寫工具包。
可在壹個文件中存儲多幅圖像。
編輯本段
PNG文件的使用:
PNG格式圖片因其高保真性、透明性及文件大小較小等特性,被廣泛應用於網頁設計、平面設計中。網絡通訊中因受帶寬制約,在保證圖片清晰、逼真的前提下,網頁中不可能大範圍的使用文件較大的bmp、jpg格式文件,gif格式文件雖然文件較小,但其顏色失色嚴重,差強人意,所以PNG格式文件自誕生之日起就大行其道。
PNG格式圖片通常被我們當做素材來使用,在設計過程中,不可避免的要搜索相關文件,如果是JPG格式文件,摳圖就在所難免,費時費力,gif格式雖然具有透明性,但其只是對其中壹種或幾種顏色設置為完全透明,並沒有考慮對周圍顏色的影響,所以此時PNG格式文件就成了我們的不二之選。我們經常在網頁中看到整個頁面使用同壹個PNG圖片做背景,按鈕、導航條等全做在壹張圖片上,其實就是這個道理,究其緣由無非就是PNG圖片在下載過程中占帶寬較小,而且顏色逼真,下載壹次可重復使用。
編輯本段
文件結構
PNG圖像格式文件(或者稱為數據流)由壹個8字節的PNG文件署名(PNG file signature)域和按照特定結構組織的3個以上的數據塊(chunk)組成。
PNG定義了兩種類型的數據塊,壹種是稱為關鍵數據塊(critical chunk),這是標準的數據塊,另壹種叫做輔助數據塊(ancillary chunks),這是可選的數據塊。關鍵數據塊定義了4個標準數據塊,每個PNG文件都必須包含它們,PNG讀寫軟件也都必須要支持這些數據塊。雖然PNG文件規範沒有要求PNG編譯碼器對可選數據塊進行編碼和譯碼,但規範提倡支持可選數據塊。
(1) PNG文件署名域
8字節的PNG文件署名域用來識別該文件是不是PNG文件。該域的值是:
十進制數 137 80 78 71 13 10 26 10
十六進制數 89 50 4e 47 0d 0a 1a 0a
(2) 數據塊的結構
每個數據塊都由表6-07所示的的4個域組成。
表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
各種註釋
-----------------------------------------------------------------------------------------
PNG = Papua New Guinea 巴布亞新幾內亞 (大洋洲壹島國)