欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Js利用Canvas實(shí)現(xiàn)圖片壓縮功能

 更新時(shí)間:2017年09月13日 07:51:04   作者:similar  
下面小編就為大家?guī)?lái)一篇Js利用Canvas實(shí)現(xiàn)圖片壓縮功能。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

最近做的APP項(xiàng)目涉及到手機(jī)拍照上傳圖片,因?yàn)槭謾C(jī)拍照的圖片通常都比較大,所以上傳的時(shí)候就會(huì)很慢。為此,需要對(duì)圖片進(jìn)行壓縮處理來(lái)優(yōu)化上傳功能。以下是具體實(shí)現(xiàn):

/* 
 * 圖片壓縮
 * img    原始圖片
 * width   壓縮后的寬度
 * height  壓縮后的高度
 * ratio   壓縮比率 
 */
 function compress(img, width, height, ratio) {        
   var canvas, ctx, img64;
        
   canvas = document.createElement('canvas');        
   canvas.width = width;
   canvas.height = height;
        
   ctx = canvas.getContext("2d");        
   ctx.drawImage(img, 0, 0, width, height);
        
   img64 = canvas.toDataURL("image/jpeg", ratio);
        
   return img64;
 }

上面是一個(gè)圖片壓縮函數(shù),返回 base64 格式的圖片數(shù)據(jù)。 其中壓縮比率取值(0 - 1 之間)越大圖片質(zhì)量越高。建議不要將圖片轉(zhuǎn)為 png 格式,因?yàn)檗D(zhuǎn)為 png 格式,圖片的 base64 比轉(zhuǎn)為 jpeg 的要長(zhǎng)不少。下面是實(shí)際調(diào)用:

var image = new Image();
image.src = "/img/test.jpg";
      
image.onload = function(){
  var img64 = compress(image, 500, 400, 0.7);
  document.getElementById("test").src = img64;
}

注意: 壓縮方法的調(diào)用以及圖片src賦值必須放在圖片的 onload 方法里面。因?yàn)橹挥械葓D片加載完成后才能進(jìn)行壓縮處理,從而轉(zhuǎn)換為base64 進(jìn)行賦值。 如果放在 onload 方法外面,則可能壓縮代碼無(wú)效,或者會(huì)生成一張純黑色的圖片。

以上這篇Js利用Canvas實(shí)現(xiàn)圖片壓縮功能就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論