PNG

圖像文件存儲格式

PNG是20世紀90年代中期開始開發的圖像文件存儲格式,其目的是企圖替代GIF和TIFF文件格式,同時增加一些GIF文件格式所不具備的特性。

一般被應用於JAVA程序、網頁或S60程序中。

基本介紹


PNG 格式
PNG 格式
便攜網路圖形 (PNG) 格式是作為 GIF 的無專利替代品開發的,用於無損壓縮和在 Web 上顯示圖像。與 GIF 不同,PNG 支持 24 點陣圖像併產生無鋸齒狀邊緣的背景透明度;但是,某些 Web 瀏覽器不支持 PNG 圖像。 PNG 格式支持無 Alpha 通道的 RGB、索引顏色、灰度和點陣圖模式的圖像。 PNG 保留灰度和 RGB 圖像中的透明度。
PNG(Portable Network Graphics)是一種新興的網路圖像格式。在1994年底,由於Unysis公司宣布GIF擁有專利的壓縮方法,要求開發GIF軟體的作者須繳交一定費用,由此促使免費的png圖像格式的誕生。PNG一開始便結合GIF及JPG兩家之長,打算一舉取代這兩種格式。1996年10月1日由PNG向國際網路聯盟提出並得到推薦認可標準,並且大部分繪圖軟體和瀏覽器開始支持PNG圖像瀏覽,從此PNG圖像格式生機煥發。

優點


PNG是目前保證最不失真的格式,它汲取了GIF和JPG二者的優點,存貯形式豐富,兼有GIF和JPG的色彩模式;它的另一個特點能把圖像文件壓縮到極限以利於網路傳輸,但又能保留所有與圖像品質有關的信息,因為PNG是採用無損壓縮方式來減少文件的大小,這一點與犧牲圖像品質以換取高壓縮率的JPG有所不同;它的第三個特點是顯示速度很快,只需下載1/64的圖像信息就可以顯示出低解析度的預覽圖像;
PNG 格式
PNG 格式
因為不允許上傳png格式的文件,所以這裡一律截圖。PNG示例
第四,PNG同樣支持透明圖像的製作,透明圖像在製作網頁圖像的時候很有
用,我們可以把圖象背景設為透明,用網頁本身的顏色信息來代替設為透明
的色彩,這樣可讓圖像和網頁背景很和諧地融合在一起。

缺點


PNG的缺點是不支持動畫應用效果,如果在這方面能有所加強,簡直就可以完全替代GIF和JPEG了。Macromedia公司的Fireworks軟體的默認格式就是PNG。現在,越來越多的軟體開始支持這一格式,而且在網路上也越來越流行。多大PNG示例

格式特點


1、每個像素為48位的真彩色圖像。
PNG 格式
PNG 格式
2、每個像素為16位的灰度圖像。
3、可為灰度圖和真彩色圖添加α通道。
4、添加圖像的γ信息。
5、使用循環冗餘碼(cyclicredundancycode,CRC)
檢測損害的文件。
6、加快圖像顯示的逐次逼近顯示方式。
7、標準的讀/寫工具包。
8、可在一個文件中存儲多幅圖像。
使用彩色查找表或者叫做調色板可支持256種顏色的彩色圖像。
流式讀/寫性能
png圖片圖像文件格式允許連續讀出和寫入圖像數據,這個特性很適合於在通信過程中生成和顯示圖像。
逼近顯示
這種特性可使在通信鏈路上傳輸圖像文件的同時就在終端上顯示圖像,把整個輪廓顯示出來之後逐步顯示圖像的細節,也就是先用低解析度顯示圖像,然後逐步提高它的解析度。
透明性
這個性能可使圖像中某些部分不顯示出來,用來創建一些有特色的圖像。
輔助信息
這個特性可用來在圖像文件中存儲一些文本註釋信息。
獨立於計算機軟硬體環境。
使用無損壓縮。
PNG文件格式中要增加下列GIF文件格式所沒有的特性:
每個像素為48位的真彩色圖像。
每個像素為16位的灰度圖像。
可為灰度圖和真彩色圖添加α通道。
添加圖像的γ信息。
使用循環冗餘碼(cyclic redundancy code,CRC)檢測損壞的文件。
加快圖像顯示的逐次逼近顯示方式。
標準的讀/寫工具包。

文件結構


PNG圖像格式文件(或者稱為數據流)由一個8位元組的PNG文件署名(PNGfilesignature)域和按照特定結構組織的3個以上的數據塊(chunk)組成。
PNG定義了兩種類型的數據塊,一種是稱為關鍵數據塊(criticalchunk),這是標準的數據塊,另一種叫做輔助數據塊(ancillarychunks),這是可選的數據塊。關鍵數據塊定義了4個標準數據塊,每個PNG文件都必須包含它們,PNG讀寫軟體也都必須要支持這些數據塊。雖然PNG文件規範沒有要求PNG編解碼器對可選數據塊進行編碼和解碼,但規範提倡支持可選數據塊。
(1)PNG文件署名域
8位元組的PNG文件署名域用來識別該文件是不是PNG文件。該域的值是:
十進位數13780787113102610
十六進位數89504e470d0a1a0a
(2)數據塊的結構
每個數據塊都由表1所示的的4個域組成。
PNG文件數據塊的結構
名稱位元組數說明
Length(長度)4位元組指定數據塊中數據域的長度,其長度不超過(231-1)位元組
ChunkTypeCode(數據塊類型碼)4位元組數據塊類型碼由ASCII字母(A-Z和a-z)組成
ChunkData(數據塊數據)可變長度存儲按照ChunkTypeCode指定的數據
CRC(循環冗餘檢測)4位元組存儲用來檢測是否有錯誤的循環冗餘碼
在表1中,CRC(cyclicredundancycheck)域中的值是對ChunkTypeCode域和ChunkData域中的數據進行計算得到的。CRC具體演演算法定義在ISO3309和ITU-TV.42中,其值按下面的CRC碼生成多項式進行計算:
x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1(x^n表示x的n次方)
數據塊結構
1.關鍵數據塊
關鍵數據塊中的4個標準數據塊是:
(1)文件頭數據塊IHDR(headerchunk):它包含有PNG文件中存儲的圖像數據的基本信息,並要作為第一個數據塊出現在PNG數據流中,而且一個PNG數據流中只能有一個文件頭數據塊。
文件頭數據塊由13位元組組成,它的格式如表2所示。
表2PNG文件頭鍵數據塊的結構
域的名稱位元組數說明
Width4bytes圖像寬度,以像素為單位
Height4bytes圖像高度,以像素為單位
Bitdepth1byte圖像深度:
索引彩色圖像:1,2,4或8
灰度圖像:1,2,4,8或16
真彩色圖像:8或16
ColorType1byte顏色類型:
0:灰度圖像,1,2,4,8或16
2:真彩色圖像,8或16
3:索引彩色圖像,1,2,4或8
4:帶α通道數據的灰度圖像,8或16
6:帶α通道數據的真彩色圖像,8或16
Compressionmethod1byte壓縮方法(LZ77派生演演算法)
Filtermethod1byte濾波器方法
Interlacemethod1byte隔行掃描方法:
0:非隔行掃描
1:Adam7(由AdamM.Costello開發的7遍隔行掃描方法)
(2)調色板數據塊PLTE(palettechunk):它包含有與索引彩色圖像((indexed-colorimage))相關的彩色變換數據,它僅與索引彩色圖像有關,而且要放在圖像數據塊(imagedatachunk)之前。真彩色的PNG數據流也可以有調色板數據塊,目的是便於非真彩色顯示程序用它來量化圖像數據,從而顯示該圖像。調色板數據塊結構如表3所示。
表3調色板數據塊結構
域的名稱位元組數說明
Red1byte0=黑,255=紅
Green">
0=黑,255=綠
Blue1byte0=黑,255=藍
調色板實際是一個彩色索引查找表,它的表項數目可以是1~256中的一個數,每個表項有3位元組,因此調色板數據塊所包含的最大位元組數為768。
(3)圖像數據塊IDAT(imagedatachunk):它存儲實際的數據,在數據流中可包含多個連續順序的圖像數據塊。
(4)圖像結束數據IEND(imagetrailerchunk):它用來標記PNG文件或者數據流已經結束,並且必須要放在文件的尾部。
除了表示數據塊開始的IHDR必須放在最前面,表示PNG文件結束的IEND數據塊放在最後面之外,其他數據塊的存放順序沒有限制。
2.輔助數據塊
PNG文件格式規範制定的10個輔助數據塊是:
(1)背景顏色數據塊bKGD(backgroundcolor)。
(2)基色和白色度數據塊cHRM(primarychromaticitiesandwhitepoint)。所謂白色度是指當R=G=B=最大值時在顯示器上產生的白色度。
(3)圖像γ數據塊gAMA(imagegamma)。
(4)圖像直方圖數據塊hIST(imagehistogram)。
(5)物理像素尺寸數據塊pHYs(physicalpixeldimensions)。
(6)樣本有效位數據塊sbit(significantbits)。
(7)文本信息數據塊tEXt(textualdata)。
(8)圖像最後修改時間數據塊tIME(imagelast-modificationtime)。
(9)圖像透明數據塊tRNS(transparency)。
(10)壓縮文本數據塊zTXt(compressedtextualdata)。
3.數據塊摘要
關鍵數據塊、輔助數據塊和專用公共數據塊(special-purposepublicchunks)綜合在表4中。
表4PNG文件格式中的數據塊
數據塊符號數據塊名稱多數據塊可選否位置限制
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與GIF對比

各種圖片格式PNG使用了從LZ77派生的一個非專利無失真式壓縮演演算法(名為deflation)。這個演演算法對圖像里的直線進行預測然後存儲顏色差值,這使得PNG經常能獲得比原始圖像甚至比GIF更大的壓縮率。但也有一些軟體不能使用適合的預測而造成過分臃腫的PNG文件。

png與jpg之間的轉換

最簡單的方法,用Windows自帶的畫圖,打開jpg文件,然後文件另存為(PNG)
或者用用photoshop打開圖,然後另存為,保存成png格式就成
PNG格式的圖片還可以用QuickConvert軟體變換格式