複製鏈接
請複製以下鏈接發送給好友

PNG

鎖定
PNG(Portable Network Graphics),便攜式網絡圖形,是一種採用無損壓縮算法的位圖格式,支持索引、灰度、RGB三種顏色方案以及Alpha通道等特性。 [5]  其設計目的是試圖替代GIFTIFF文件格式,同時增加一些GIF文件格式所不具備的特性。PNG使用從LZ77派生的無損數據壓縮算法,一般應用於JAVA程序、網頁或S60程序中,原因是它壓縮比高,生成文件體積小。PNG文件的擴展名為.png
中文名
便攜式網絡圖形
外文名
Portable Network Graphics
類    型
無損壓縮的位圖片形格式
設計目的
試圖替代GIFTIFF文件格式

PNG發展歷史

1995年早期,Unisys公司根據它在GIF格式中使用的LZW數據壓縮算法的軟件專利開始商業收費,為避免專利影響,用於表現單張圖像的PNG、用於表現動畫的MNG圖形文件格式被同時創建出來。1999年8月,Unisys公司進一步中止了對自由軟件和非商用軟件開發者的GIF專利免費許可,從而使PNG格式獲得了更多的關注。 [1] 
在PNG傳播過程中,很多網絡瀏覽器經過很長時間才開始完全支持PNG格式,如Microsoft Windows默認的Internet Explorer瀏覽器一直到7.0版才支持PNG格式中的半透明效果,較早期的版本(如6.0 SP1)需要下載Hotfix 或由網站提供額外的Script去支持,這造成PNG格式並沒有得到廣泛的認知。
1996年6月提出PNF(Portable Network Frame)草案,當年8月改名為MNG(Multiple-image Network Graphics)。
PNG的1.0版本規範於1996年7月1日發佈,後來被稱為RFC 2083標準,並在1996年10月1日成為W3C建議。
PNG的1.1版本進行了部分小幅修改並增加了三個新的數據塊定義,於1998年12月31日發佈。
PNG的1.2版本增加了另外一個數據塊,於1999年8月11日發佈。
PNG現行版本是國際標準(ISO/IEC 15948:2003),並在2003年11月10日作為W3C建議發佈。這個版本與1.2版僅有細微差別。
2004年末,PNG的動畫擴展——APNG,被提出來。這是一個相對於MNG更簡單的動畫實現方案,不識別APNG格式的PNG解碼器至少能夠正常回放第一幅普通PNG畫面。 [2] 

PNG特性

體積小 網絡通訊中因受帶寬制約,在保證圖片清晰、逼真的前提下,網頁中不可能大範圍的使用文件較大的bmp格式文件。
無損壓縮 PNG文件採用LZ77算法的派生算法進行壓縮,其結果是獲得高的壓縮比,不損失數據。它利用特殊的編碼方法標記重複出現的數據,因而對圖像的顏色沒有影響,也不可能產生顏色的損失,這樣就可以重複保存而不降低圖像質量。
索引彩色模式 PNG-8格式與GIF圖像類似,同樣採用8位調色板RGB彩色圖像轉換為索引彩色圖像。圖像中保存的不再是各個像素的彩色信息,而是從圖像中挑選出來的具有代表性的顏色編號,每一編號對應一種顏色,圖像的數據量也因此減少,這對彩色圖像的傳播非常有利。
更優化的網絡傳輸顯示 PNG圖像在瀏覽器上採用流式瀏覽,即使經過交錯處理的圖像會在完全下載之前提供瀏覽者一個基本的圖像內容,然後再逐漸清晰起來。它允許連續讀出和寫入圖像數據,這個特性很適合於在通信過程中顯示和生成圖像。
支持透明效果 PNG可以為原圖像定義256個透明層次,使得彩色圖像的邊緣能與任何背景平滑地融合,從而徹底地消除鋸齒邊緣。這種功能是GIF和JPEG沒有的。
PNG同時還支持真彩灰度級圖像的Alpha通道透明度。 [3]  最高支持24位真彩色圖像以及8位灰度圖像。支持Alpha通道的透明/半透明特性。支持圖像亮度的Gamma校準信息。支持存儲附加文本信息,以保留圖像名稱、作者、版權、創作時間、註釋等信息。

PNG文件構成

PNG圖像格式的文件由一個8字節的PNG文件署名和3個以上的後續數據塊,如IHDR、IDAT、IEND等組成。 [6] 

PNG文件署名

PNG文件包括8字節文件署名(89 50 4E 47 0D 0A 1A 0A,十六進制),用於識別PNG格式,所有PNG圖片文件內容開頭都有都有文件署名。
89:用於檢測傳輸系統是否支持8位的字符編碼(8 bit data),用以減少將文本文件被錯誤的識別成PNG文件的機會,反之亦然。
50 4E 47:PNG每個字母對應的ASCII,讓用户可以使用文本編輯器查看時,識別出是PNG文件。
0D 0A:DOS風格的換行符(CRLF)。用於DOS-Unix數據的換行符轉換。
1A:在DOS命令行下,用於阻止文件顯示的文件結束符。
0A:Unix風格的換行符(LF)。用於Unix-DOS換行符的轉換。 [6] 

PNG數據塊結構

PNG定義了兩種類型的數據塊,一種是稱為關鍵數據塊(critical chunk),這是必需的數據塊,另一種叫做輔助數據塊(ancillary chunks),這是可選的數據塊。
每個數據塊都包含長度,數據塊類型,數據塊數據,循環冗餘檢測四個部分。
關鍵數據塊定義了4個標準數據塊:文件頭數據塊IHDR,調色板數據塊PLTE,圖像數據塊IDAT,圖像結束數據塊IEND。每個PNG文件都必須包含它們,PNG讀寫軟件也都必須要支持這些數據塊。
輔助數據塊有cHRM,gAMA,sBIT等,雖然PNG文件規範沒有要求PNG編譯碼對可選數據塊進行編碼和譯碼,但規範提倡支持可選數據塊。 [7] 

PNGPNG格式

PNG格式有8位、24位、32位三種形式,其中8位PNG支持兩種不同的透明形式(索引透明和alpha透明),24位PNG不支持透明,32位PNG在24位基礎上增加了8位透明通道,因此可展現256級透明程度。
PNG8和PNG24後面的數字則是代表這種PNG格式最多可以索引和存儲的顏色值。8代表2的8次方也就是256色,而24則代表2的24次方大概有1600多萬色

PNGPNG與 GIF

1、一般情況下將靜態GIF圖像無損轉換為PNG後可以壓縮率會略為提高(前提是同樣採用8位索引模式)。
2、PNG可提供更大顏色深度的支持,包括24位(8位3通道)和48位(16位3通道)真彩色。加入α通道後可進一步支持每像素64位的表示。
3、超過8位色深的PNG圖像轉換為GIF時,圖像質量會由於分色顏色數減少)而下降。
4、GIF原生支持動態圖像,PNG只能通過非標準實現,在PNG的基礎上另有發展出支持動畫的APNGMNG格式,但普及度不高。PNG在IE6等舊瀏覽器上的支持較差。

PNGPNG 與JPEG

1、JPEG可以對照片(或類似)圖像生成更小的文件,這是由於JPEG採用了一種針對照片圖像的特定有損編碼方法,這種編碼適用於低對比,圖像顏色過渡平滑,噪聲多,且結構不規則的情況下。如果在這種情況下用PNG代替JPEG,文件尺寸增大很多,而圖像質量的提高有限。相應的,如果保存文本,線條或類似的邊緣清晰,有大塊相同顏色區域的圖像,PNG格式的壓縮效果就要比JPEG好很多,並且不會出現JPEG那樣的高對比度區域的圖像有損。如果圖像既有清晰邊緣,又有照片圖像的特點,就在在這兩種格式之間權衡一下了。JPEG不支持透明度。
2、由於JPEG是有損壓縮,會產生迭代有損,在重複壓縮和解碼的過程中會不斷丟失信息使圖像質量下降。由於PNG是無損的,保存將要被編輯的圖像來説更加合適。雖然PNG壓縮照片圖像也有效,但有專門針對照片圖像設計的無損壓縮格式,比如無損JPEG2000,Adobe DNG等。總的來説這些格式都不能做到適用所有圖像。對於將要發佈的圖像可以保存成JPEG,用JPEG編碼一次不會造成明顯的圖像有損。

PNGPNG vs JPEG-LS

JPEG-LS是一個“幾乎”無損壓縮格式,相對於上面提到的有損JPEG壓縮,它的知名度不高。它可以直接和PNG相比較,使用一組標準的測試圖像。在Waterloo Repertoire ColorSet(一組標準測試圖像)下,JPEG-LS通常表現要比PNG好10%-15%,但其中有一些圖像PNG表現明顯更好一些,大約50%-75%。所以,如果這兩種格式都支持而且對圖像文件大小很敏感的話,可以用這兩種格式都試試,和圖像數據本身有比較大關係。

PNGPNG與TIFF

TIFF是一個相當多方案結合的格式。它被廣泛用作專業圖像編輯軟件之間圖像交換的中間格式,因此它不斷支持更多應用程序所需的功能,而對應用程序不關心的圖像操作部分支持不多。這也意味着許多應用程序只能識別TIFF的一個子集,而產生更多的潛在混淆之處。
TIFF使用的最通用的無損壓縮算法是LZW。這種算法--GIF中也在使用,直到2003年一直在專利保護之中。有一種TIFF變種使用與PNG相同的壓縮算法,但是沒有被許多專利程序所支持。TIFF也提供了一種特殊的無損壓縮算法,類似CCITTGroup IV,可以對二值圖像(比如傳真或黑白文本)比PNG有更好的壓縮效果。 PNG只支持非自左乘α,而TIFF也支持聯合(自左乘)α。
PNG規範中不包含嵌入式EXIF(可交換圖像文件格式)圖像數據的標準,比如數碼像機拍得的圖像。而TIFF,JPEG 2000, DNG都支持EXIF。
早期的瀏覽器不支持PNG圖像;JPEG和GIF是主流圖像格式。由於GIF的顏色深度限制,網頁中的有顏色過渡的圖像都是使用JPEG。不管怎樣,JPEG壓縮都會導致圖像的輕微模糊。而PNG可以做到在相應顏色深度下的儘可能精確,同時保持圖像文件不大。PNG已經漸漸成為一種對於小的梯度圖像的較好的選擇,眾多瀏覽器都已經對PNG有了很好的支持 [4] 
參考資料
  • 1.    李漢強.網絡圖形新生代[J].電腦報,2001(12):1-2
  • 2.    王明光.PNG Decoder硬件加速器的設計[D].西安電子科技大學,2012
  • 3.    孫浩.網絡圖像文件格式PNG[J].電子出版,2004(3):5-8
  • 4.    靳乾.DICOM醫學圖像轉換PNG圖像技術研究[D].內蒙古內蒙古科技大學,2012
  • 5.    Steve Marschner,PeterShirley.Fundamentals of Computer Graphics:A K Peters/CRC Press,2009-7-21
  • 6.    W3C 2003,5.2 PNG signature
  • 7.    W3C 2003,5.3 Chunk layout