javascript - canvas壓縮圖片的原理是什麼
给我你的怀抱
给我你的怀抱 2017-06-26 10:55:55
0
2
1140

canvas中的toDataURL方法可指定圖片壓縮後的格式及壓縮質量,例如壓縮成webp格式:

canvas.toDataURL('image/webp',quality);

toDataURL是用base64對影像進行編碼的,且編碼後的來源檔案比編碼前大33%,參考位址,但是quality參數可以指定壓縮質量,壓縮質量越接近0,圖片壓縮力道越大。

問題1:採用base64編碼將圖片來源檔變大了,那base64能壓縮圖片嗎?

問題2:用base64編碼小圖片只是為了減少http請求嗎?

問題3:canvas中的toDataURL方法壓縮圖片的原理是什麼? quality參數具體做了什麼?

给我你的怀抱
给我你的怀抱

全部回覆(2)
滿天的星座

base64只是對圖片對應的二進位碼,依照六位元對應一個字元規則做轉換,轉碼後是反而比原圖片檔案大的。但對於小圖片而言,轉換後多出來的位元組傳輸遠比多建立一個http連線開銷小,所以會利用base64對小圖轉碼來提高頁面載入速度。
至於圖片壓縮原理,簡單來說,透過演算法減少一張圖片上的顏色差異,犧牲圖片畫質。例如緊鄰的顏色相近的四個像素的顏色資訊壓縮前大概佔16個位元組,壓縮後變成一個顏色就能減少近4倍。 quality用來控制色差的力度,值越小力度越大,顏色相差較大的兩個像素也會被處理,自然被壓縮後檔案就越小,畫質就越爛

黄舟
  1. 不行

  2. 控制圖片編碼格式的質量,例如webp可以進行有損壓縮,質量越高,損失越小,檔案體積就越大

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板