web前端開發常用的幾種圖片格式及其使用規範

矢量圖與位圖

矢量圖是通過組成圖形的一些基本元素,如點、線、面,邊框,填充色等信息通過計算的方式來顯示圖形的。一般來說矢量圖表示的是幾何圖形,文件相對較小,並且放大縮小不會失真。

這裏有一點要注意的是web開發中用到的圖片都不是矢量圖,即使是一個三角形,只有一個邊框,都是位圖。

那麼矢量圖在哪裏有用到呢?

我目前的知識池就知道一個圖標字體,比如 font-awesome 

 

位圖又叫像素圖或柵格圖,它是通過記錄圖像中每一個點的顏色、深度、透明度等信息來存儲和顯示圖像。一張位圖就好比一幅大的拼圖,只不過每個拼塊都是一個純色的像素點。位圖的優點是利於顯示色彩層次豐富的寫實圖像。缺點則是文件大小較大,放大和縮小圖像會失真。

目前在前端的開發中常用的圖片格式有三種:jpg,png,gif。這些都是位圖。


 

有損壓縮和無損壓縮

有損壓縮是對圖像數據進行處理,去掉那些圖像上會被人眼忽略的細節,然後使用附近的顏色通過漸變或其他形式進行填充。這樣既能大大降低圖像信息的數據量,又不會影響圖像的還原效果。

JPG是我們最常見的採用有損壓縮對圖像信息進行處理的圖片格式。

我們在保存圖片爲jpg格式時,會有一個品質選項

這裏指的就是對圖片的損耗程度,如果壓縮的話一般選擇品質在60-80之間,60以下圖片失真會很嚴重。

無損壓縮

PNG是我們最常見的一種採用無損壓縮的圖片格式。無損壓縮的壓縮原理是先判斷圖像上哪些區域的顏色是相同的,哪些是不同的,然後把這些相同的數據信息進行壓縮記錄,(例如一片藍色的天空之需要記錄起點和終點的位置就可以了),而把不同的數據另外保存(例如天空上的白雲和漸變等數據)。

這裏要說明的是,無損壓縮只是一種相對的“無損”壓縮,並不是說無論如何壓縮圖片都不會失真。這點在PNG8中體現的尤爲明顯。PNG8最多隻能索引256種顏色,所以在圖像上出現的顏色數量大於我們可以保存的顏色數量時,我們就不能真實的記錄和還原圖像了。


 

透明

索引透明:即布爾透明,類似於GIF,某一像素只有全透和全不透明兩種效果不能對透明度進行設置

Alpha透明:半透明


 

下面咱們進入正題,這是重點O(∩_∩)O哈!(拍桌子~)。

1 GIF

先簡單說一下GIF吧,GIF是一種正在逐漸被拋棄的圖片格式。PNG格式的出現就是爲了替代它。PNG 8除了不支持動畫外,PNG8有GIF所有的特點,但是比GIF更加具有優勢的是它支持alpha透明和更優的壓縮(GIF僅支持索引透明)。

但是gif在網上還是有一席之地的,比如在貼吧或者qq羣裏常看到的動畫圖片,用的都是gif。

當圖片顏色簡單到一定程度,大小小到一定程度的時候,gif格式圖片大小要小於png8。比如一個1*1像素的純黑色點,在PNG8下是124byte,在GIF下是43byte。

 

2 JPG

優缺點:

  1. 支持攝影圖像或寫實圖像的高級壓縮,並且可利用壓縮比例控制圖像文件大小。
  2. 有損壓縮會使圖像數據質量下降,並且在編輯和重新保存JPG格式圖像時,這種下降損失會累積。
  3. JPG和PNG8都適合顏色較少的圖片,因爲JPG在柵格化時精確記錄少數點,其它點用差值補齊。但是當圖像顏色數少於一定值比如256的時候,PNG8可能更合適
  4. JPG不適合具有大塊顏色相近的區域或亮度("銳度")差異十分明顯的較簡單的圖片。

JPG在存儲攝影或寫實圖像一般能達到最佳的壓縮效果,比如網站的背景圖,輪播圖,用戶頭像等等。

 

3 PNG

這裏PNG放在最後說,PNG可以細分爲三種格式:PNG8,PNG24,PNG32。

後面的數字代表這種PNG格式最多可以索引和存儲的顏色值。”8″代表2的8次方也就是256色,而24則代表2的24次方大概有1600多萬色。

關於透明:

  1. PNG8支持索引透明和alpha透明
  2. PNG24不支持透明;
  3. 而PNG32在24位的PNG基礎上增加了8位(256階)的alpha通道透明,也就是說可以存儲從完全透明到完全不透明一共256個層級的透明度(即所謂的半透明)。

你可能要問了,我保存是PNG-24格式,爲什麼還有透明呢?

其實在你勾選了透明度選項之後,你保存的格式就是PNG-32了,只是ps沒有提示你罷了。

優缺點:

  1. 能在保證最不失真的情況下儘可能壓縮圖像文件的大小。
  2. PNG用來存儲灰度圖像時,灰度圖像的深度可多到16位,存儲彩色圖像時,彩色圖像的深度可多到48位,並且還可存儲多到16位的α通道數據。
  3. 對於需要高保真的較複雜的圖像,PNG雖然能無損壓縮,但圖片文件較大,不適合應用在Web頁面上。

 


 

 

使用規範:

1,少用圖片元素,儘量用css3代替

比如圓角,提示框,不會二次渲染的元素的陰影。關於css3的filter屬性,在移動端並不推薦使用,雖然會節省圖片的空間,但是  1、渲染會消耗性能,導致頁面加載反而變慢;2、andorid系統在4.0以上版本才支持。

2,儘量少用png32格式,太大了=。=

在某些情況下,如果損失一定的視覺可以獲得性能較大的提升,可以和設計師協商去掉一些效果。

3, JPG適合攝影圖像或寫實圖像,同時也適合顏色較少圖像;

  PNG8 適合所含顏色很少(少於256)、具有大塊顏色相近的區域或亮度差異十分明顯的較簡單的圖片;

  PNG32適合圖片較爲複雜且有透明效果且透明效果無法用css來實現的情況。

4, 如果頁面中有較多的小icon,首先考慮使用webfont,如果webfont不能滿足需求,必須使用css sprite將圖片合併,來壓縮總體圖片的大小,同時減少頁面請求提高訪問速度。

發佈了30 篇原創文章 · 獲贊 42 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章