【原】PNG的使用技巧


Png是圖像文件存儲格式,在網頁設計中已經不是一個陌生的名詞,在前端開發中經常使用到它,如常用CSS 雪碧圖。而Png的使用不僅僅如此,Png有多少種格式,有哪些特點,PC端中常用的Png格式是哪些,手機端最合適的Png格式是什么呢?如果你對這些問題有疑問,那么很開心的告訴你,這里有你需要的答案(*^__^*) 嘻嘻……

目錄:

 

PNG的格式和透明度

這個Fireworks會比較清楚,打開Fireworkd優化面板,可以清楚看到png有3種不同深度的格式:png8、png24、png32

其中,在優化面板選擇png8,可發現png8包括不透明索引色透明Alpha透明3種格式

PNG8

8位的PNG最多支持256(2的8次方)種顏色,8位的PNG支持不透明、索引透明、alpha透明

PNG24

支持2的24次方種顏色,表現為不透明

PNG32

支持2的32次方種顏色,32位是我們最常使用的格式,它是在PNG在24位的PNG基礎上增加了8位的透明信息,支持不同程度的半透效果

 

其實PNG8的3種格式不透明、索引透明、alpha透明,正好把png的所有格式都歸類好了:

  • [PNG 不透明]格式
  • [PNG 索引透明]格式
  • [PNG Alpha透明]格式

有不明白的地方,請往下看~

 

[PNG 不透明]格式

說到不透明,就像jpg格式一樣,『png 不透明』只能為不透明,代表格式有:『png8 不透明』和『png24』,導出軟件有:Photoshop、Fireworks。不推薦使用『png 不透明』格式,建議用jpg圖片來代替它。

可能會有同學會問為什么png24是不透明的,我使用photoshop導出來的就是png24啊?

Png24實際為不透明圖片

打開photoshop,任意打開一個帶透明的psd文件,存儲為web所有格式(ctrl+shift+alt+s),如下面板所示:

不勾選透明度單選框,透明背景會被默認的白色填充

導出來的png圖片深度為24位,圖片為不透明,表現跟jpg圖片相似

如果勾選了alpha通道,導出來的深度是32位透明圖片

從photoshop存儲為web所有格式面板中這樣理解,png24深度其實為24位,再勾選上8位的alhpa通道,24+8=32,即[png32] = [png24+alpha],這也許是photoshop軟件開發者不添加png32位格式的原因,下圖為Photoshop存儲為web所有格式界面的圖片格式選擇,並沒有png32位的選項~

 

[PNG 索引透明]格式

說到索引顏色透明,我們可以了解下什么是索引顏色,『png 索引透明』代表格式有『png8 索引透明』,導出軟件有:Photoshop、Fireworks,它總結如下:

  • 挑選一副圖片中最有代表性的若干種顏色(通常不超過256種)
  • 只能為不透明或全透明
  • [Png8 索引透明]文件體積小
  • [Png8 索引透明]產生雜邊鋸齒
  • [Png8 索引透明]支持IE6

如何使用Photoshop導出[png8 索引透明]

使用Photoshop,存儲為web所有格式,按照如下圖片的紅色邊框配置,可導出png8索引透明

注:使用Photoshop導出[png8 索引透明]的效果比Fireworks導出的效果良好,這里不介紹使用Fireworks導出[png8 索引透明]

[png8 索引透明]產生雜邊鋸齒原因 

[png8 索引透明]只有透明索引顏色,沒有半透明索引顏色,下面左側為帶半透明像素的圖片,在瀏覽器中打開不會有鋸齒,而右側圖片為全透明或不透明的像素,在瀏覽器打開后有鋸齒

由於[png8 索引透明]沒有半透明索引顏色,使用Photoshop導出時,原有的半透明轉化為不透明,從而產生鋸齒。

如何避免[png8 索引透明]的雜邊鋸齒

方法:設置雜邊與背景色顏色一致可達到視覺上透明

相信不難理解,利用雜邊與背景色一致,可以來滿足視覺上的透明,缺點是只能適應一種背景色,在其它背景色下同樣會產生雜邊

怎么設置呢,打開Photoshop,在存儲為web格式面板中進行如下操作:

 

[PNG Alpha透明]格式

說到 Alpha透明,我們可以了解下什么是alpha通道『png alpha透明』代表格式有『png8 alpha透明』和『png32』,導出軟件有Fireworks,總結如下:

  • 一個8位的灰度通道,該通道用256級灰度來記錄圖像中的透明度信息,定義透明、不透明和半透明區域
  • 支持全透明和半透明
  • [Png8 alpha透明]文件體積小
  • [Png8 alpha透明]在IE6下有毛邊

如何使用Fireworks導出[png8 alpha透明]

Firewoks中,在優化面板,按照如下圖片的紅色邊框配置,可導出png8 alpha透明

注:Firewoks支持導出[png8 alpha透明],Photoshop不支持導出[png8 索引透明]

 

 

手機端選擇哪種Png

說到手機,考慮流量的問題是必不可少的,所選png需要滿足體積小視覺效果良好,那么哪種png格式符合這2個要求呢?做個實驗吧~

不同Png格式測試

測試平台:ios&android webkit瀏覽器

測試圖片:彩種雪碧圖1230*82

測試內容:同一張雪碧圖導出不同png格式的大小、透明度、雜邊以及在retina顯示屏和普通顯示屏下的對比

測試結果:

從上圖可見png32和png24體積太大了,十分消耗手機用戶流量,不是我們選擇的范圍,那么可以鎖定目標在[png8 alpha透明]和[png8 索引透明]中,2者對比,可以看出[png8 alpha]在手機端的支持是良好,可能有童鞋會認為,單憑一張圖片也不能下結論~

而經過筆者使用多張雪碧圖測試后使用Fireworks導出的[png8 alpha],在手機端的支持是比較好的~不僅文件小,節省流量,而且半透明效果良好

於是,移動端采用[Png8 alpha透明],相信[Png8 alpha透明 ]是未來的一種趨勢~

 

PC端選擇哪種Png

PC端使用哪種png,其實這個話題很早就有結論了,這里簡單介紹下

使用png8的方案:

使用photoshop打開雪碧圖,分別導出一張png32和一張[png8 索引透明]的圖片,高級瀏覽器使用png32位圖片,針對IE6使用[png8 索引透明],並設置[png8 索引透明]雜邊與背景色顏色一致可達到視覺上透明

注:為啥使用png32而不使用[png8 alpha透明]?因為pc端的網速大多良好,建議使用表現更佳的png圖片,顯然png32是最合適的,當然你也可以使用[png8 alpha透明],但是在高清顯示器下的質量不如png32

.bg{
background:url(global.png?v=20130530) no-repeat;
_background:url(global_png8.png?v=20130530) no-repeat;
}

使用IE濾鏡的方案:

比較耗性能,而且存在不支持背景平鋪,導致鏈接失效等缺點,不推薦該方案,不要為了IE而把自己搞得像IE~

.bg{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=”img. png”, sizingMethod=”scale”);}

另外還有js和打補丁的辦法,這里不做介紹,大家有興趣可以百度下:IE6支持png24

 

Png的格式、顏色種類、位數、透明度、瀏覽器支持一覽

 


免責聲明!

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



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