png 文檔格式



1 簡介

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. 可在一個文件中存儲多幅圖像。

6.4.2 文件結構

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

6.4.3 數據塊結構

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

各種注釋

相關文檔:《jpeg 文檔格式
相關文檔:《圖像后綴一覽表


免責聲明!

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



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