2014年9月9日 星期二

PNG vs TIFF vs JPEG vs GIF vs JPEG-LS

PNG vs GIF
對於小影像,GIF可以比PNG有更好的壓縮率。對於大多數影像,GIF檔案都會比PNG要大。
PNG提供了比GIF更廣泛的透明度選項,包括α通道透明度。
相比GIF只提供了8位元的索引顏色,PNG能提供更大顏色深度的支援,包括24位元(8位元3通道)和48位元(16位元3通道)真彩色,可以做到更高的顏色精度,更平滑的顏色過渡等等。當加入α通道後,可以支援每個像素64位元的表示。
當將一個PNG格式影像轉換為GIF時,如果PNG影像含有超過256種顏色,影像品質會由於分色(減少顏色數)而下降。
GIF原生支援動態影像,PNG只能透過非官方的外掛模組來實現。
PNG在舊瀏覽器上的支援會差一些。比如IE6對PNG的支援有限。隨著瀏覽器的換代,這已經不是問題了。

PNG vs JPEG
JPEG可以對照片(或類似)影像生成更小的檔案,這是由於JPEG採用了一種針對照片影像的特定失真編碼方法,這種編碼適用於低對比,影像顏色過渡平滑,噪音多,且結構不規則的情況下。如果在這種情況下用PNG代替JPEG,檔案尺寸增大很多,而影像品質的提高有限。相應的,如果保存文字,線條或類似的邊緣清晰,有大塊相同顏色區域的影像,PNG格式的壓縮效果就要比JPEG好很多,並且不會出現JPEG那樣的高對比度區域的影像失真。如果影像既有清晰邊緣,又有照片影像的特點,就在在這兩種格式之間權衡一下了。JPEG不支援透明度。

由於JPEG是失真壓縮,會產生迭代失真,在重複壓縮和解碼的過程中會不斷遺失資訊使影像品質下降。由於PNG是無失真的,保存將要被編輯的影像來說更加合適。雖然PNG壓縮照片影像也有效,但有專門針對照片影像設計的無失真壓縮格式,比如無失真JPEG2000,Adobe DNG等。總的來說這些格式都不能做到適用所有影像。對於將要發行的影像可以保存成JPEG,用JPEG編碼一次不會造成明顯的影像失真。

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

PNG vs TIFF
TIFF是一個相當多方案結合的格式。它被廣泛用作專業影像編輯軟體之間影像交換的中間格式,因此它不斷支援更多應用程式所需的功能,而對應用程式不關心的影像操作部分支援不多。這也意味著許多應用程式只能識別TIFF的一個子集,而產生更多的潛在混淆之處。

TIFF使用的最通用的無失真壓縮演算法是LZW。這種演算法--GIF中也在使用,直到2003年一直在專利保護之中。有一種TIFF變種使用與PNG相同的壓縮演算法,但是沒有被許多專利程式所支援。TIFF也提供了一種特殊的無失真壓縮演算法,類似CCITT Group IV,可以對二值影像(比如傳真或黑白文字)比PNG有更好的壓縮效果。 PNG只支援非自左乘α,而TIFF也支援聯合(自左乘)α。

PNG規範中不包含嵌入式EXIF(可交換圖檔格式)影像資料的標準,比如數位相機拍得的影像。而TIFF,JPEG 2000, DNG都支援EXIF。

早期的瀏覽器不支援PNG影像;JPEG和GIF是主流影像格式。由於GIF的顏色深度限制,網頁中的有顏色過渡的影像都是使用JPEG。不管怎樣,JPEG壓縮都會導致影像的輕微模糊。而PNG可以做到在相應顏色深度下的儘可能精確,同時保持圖檔不大。PNG已經漸漸成為一種對於小的梯度影像的較好的選擇,眾多瀏覽器都已經對PNG有了很好的支援。