天天看点

图片压缩(基于图片宽度)

function dealImage (base64,w) {

//压缩base64方法

var newImage = new Image();

var quality = 0.6; //压缩系数0-1之间

newImage.src = base64;

newImage.setAttribute(“crossOrigin”, ‘Anonymous’); //url为外域时需要

var imgWidth, imgHeight;

newImage.onload = function () {

imgWidth = this.width;

imgHeight = this.height;

var canvas = document.createElement(“canvas”);

var ctx = canvas.getContext(“2d”);

if (Math.max(imgWidth, imgHeight) > w) {

if (imgWidth > imgHeight) {

canvas.width = w;

canvas.height = w * imgHeight / imgWidth;

} else {

canvas.height = w;

canvas.width = w * imgWidth / imgHeight;

}

} else {

canvas.width = imgWidth;

canvas.height = imgHeight;

quality = 0.6;

}

ctx.clearRect(0, 0, canvas.width, canvas.height);

ctx.drawImage(this, 0, 0, canvas.width, canvas.height);

var base64 = canvas.toDataURL(“image/jpeg/*”, quality); //压缩语句

console.log(base64);

return base64;

}

},

使用的时候直接调用该函数:dealImage (”这个传递汲取一个图片base64“,”这个传递图片宽度我一般传1000“);函数会将压缩过的base64直接返回出来