png PNG,是一種非失真性壓縮位圖圖形文件格式。PNG格式是非失真性壓縮的,允許使用類似于GIF格式的調(diào)色板技術(shù),支持真彩色圖像,并具備阿爾法通道(半透明)等特性。現(xiàn)在有很多人使用PNG格式于互聯(lián)網(wǎng)及其他方面上。PNG的的英文名稱為Portable Network Graphics,即便攜式網(wǎng)絡(luò)圖片。另有說法是名稱來源于非官方的“PNG is Not GIF”。
png 1995年早期,Unisys公司根據(jù)它在GIF格式中使用的LZW數(shù)據(jù)壓縮算法的軟件專利(美國 第4558302號)開始商業(yè)收費(fèi)。為避免專利影響,用于表現(xiàn)單張圖像的PNG、用于表現(xiàn)動畫的MNG圖形文件格式被同時創(chuàng)建出來。1999年8月,Unisys公司進(jìn)一步中止了對自由軟件和非商用軟件開發(fā)者的GIF專利免費(fèi)許可,從而使PNG格式獲得了更多的關(guān)注。
在PNG傳播過程中,很多網(wǎng)絡(luò)瀏覽器經(jīng)過很長時間才開始支持PNG格式,如Windows默認(rèn)的IE瀏覽器一直到最新的版本IE7才完整支持PNG格式。這造成PNG格式并沒有得到廣泛的認(rèn)知。
PNG的1.0版本規(guī)范于1996年7月1日發(fā)布,后來被稱為RFC 2083標(biāo)準(zhǔn),并在1996年10月1日成為W3C建議。
PNG的1.1版本進(jìn)行了部分小幅修改并增加了三個新的數(shù)據(jù)塊定義,于1998年12月31日發(fā)布。
PNG的1.2版本增加了另外一個數(shù)據(jù)塊,于1999年8月11日發(fā)布。
PNG現(xiàn)行版本是國際標(biāo)準(zhǔn)(ISO/IEC 15948:2003),并在2003年11月10日作為W3C建議發(fā)布。這個版本與1.2版僅有細(xì)微差別。
此外也產(chǎn)生了基于PNG的動畫格式,1996年6月提出PNF(Portable Network Frame)草案,當(dāng)年8月改名為MNG。
2004年末,PNG的動畫擴(kuò)展,APNG被提出來。這是一個相對于MNG更簡單的動畫實現(xiàn)方案,不識別APNG格式的PNG解碼器至少能夠正常回放第一幅普通PNG畫面。
PNG圖像格式文件由一個8字節(jié)的PNG文件署名(file signature)域和3個以上的后續(xù)數(shù)據(jù)塊(chunk)組成。
PNG文件包括8字節(jié)文件署名(89 50 4E 47 0D 0A 1A 0A,十六進(jìn)制),用來識別PNG格式。
PNG定義了兩種類型的數(shù)據(jù)塊,一種是PNG文件必須包含、讀寫軟件也都必須要支持的關(guān)鍵塊(critical chunk);另一種叫做輔助塊(ancillary chunks),PNG允許軟件忽略它不認(rèn)識的附加塊。這種基于數(shù)據(jù)塊的設(shè)計,允許PNG格式在擴(kuò)展時仍能保持與舊版本兼容。
關(guān)鍵數(shù)據(jù)塊中有4個標(biāo)準(zhǔn)數(shù)據(jù)塊:
文件頭數(shù)據(jù)塊IHDR(header chunk):包含有圖像基本信息,作為第一個數(shù)據(jù)塊出現(xiàn)并只出現(xiàn)一次。
調(diào)色板數(shù)據(jù)塊PLTE(palette chunk):必須放在圖像數(shù)據(jù)塊之前。
圖像數(shù)據(jù)塊IDAT(image data chunk):存儲實際圖像數(shù)據(jù)。PNG數(shù)據(jù)允許包含多個連續(xù)的圖像數(shù)據(jù)塊。
圖像結(jié)束數(shù)據(jù)IEND(image trailer chunk):放在文件尾部,表示PNG數(shù)據(jù)流結(jié)束。
支持256色調(diào)色板技術(shù)以產(chǎn)生小體積文件
最高支持48位真彩色圖像以及16位灰度圖像。
支持阿爾法通道的半透明特性。
支持圖像亮度的gamma校正信息。
支持存儲附加文本信息,以保留圖像名稱、作者、版權(quán)、創(chuàng)作時間、注釋等信息。
使用無損壓縮
漸近顯示和流式讀寫,適合在網(wǎng)絡(luò)傳輸中快速顯示預(yù)覽效果后再展示全貌。
使用CRC循環(huán)冗余編碼防止文件出錯。
最新的PNG標(biāo)準(zhǔn)允許在一個文件內(nèi)存儲多幅圖像。
PNG使用了從LZ77派生的一個非專利無失真式壓縮算法(名為deflation)。這個算法對圖像里的直線進(jìn)行預(yù)測然后存儲顏色差值,這使得PNG經(jīng)常能獲得比原始圖像甚至比GIF更大的壓縮率。但也有一些軟件不能使用適合的預(yù)測而造成過分臃腫的PNG文件。
[1] PNG技術(shù)文檔 http://dev.gameres.com/Program/Visual/Other/PNGFormat.htm