Js利用Canvas实现图片压缩功能
最近做的APP项目涉及到手机拍照上传图片,因为手机拍照的图片通常都比较大,所以上传的时候就会很慢。为此,需要对图片进行压缩处理来优化上传功能。以下是具体实现:
/*
*图片压缩
*img原始图片
*width压缩后的宽度
*height压缩后的高度
*ratio压缩比率
*/
functioncompress(img,width,height,ratio){
varcanvas,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);
returnimg64;
}
上面是一个图片压缩函数,返回base64格式的图片数据。其中压缩比率取值(0-1之间)越大图片质量越高。建议不要将图片转为png格式,因为转为png格式,图片的base64比转为jpeg的要长不少。下面是实际调用:
varimage=newImage();
image.src="/img/test.jpg";
image.onload=function(){
varimg64=compress(image,500,400,0.7);
document.getElementById("test").src=img64;
}
注意:压缩方法的调用以及图片src赋值必须放在图片的onload方法里面。因为只有等图片加载完成后才能进行压缩处理,从而转换为base64进行赋值。如果放在onload方法外面,则可能压缩代码无效,或者会生成一张纯黑色的图片。
以上这篇Js利用Canvas实现图片压缩功能就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。