js实现浏览器批量压缩图片原理及代码解析

js实现浏览器批量压缩图片原理及代码解析


原理很简单,就是通过file获取图片,然后创建一个canvas画布,将图片按照画布的尺寸填充进去就实现了图片的压缩

var file = document.getElementById("file").files[0];
var reader = new FileReader();
//将文件以Data URL形式读入页面
reader.readAsDataURL(file);
reader.BfwOnload= function(e) {
        let img= new Image();
        image.src = e.target.result;          
}

压缩图片

var canvas = document.createElement('canvas');
var cBfwOntext= canvas.getContext('2d');
canvas.width = 400;
canvas.height = 300;
// 核心JS就这个
context.drawImage(img,0,0,400,300);

通过canvas.toDataURL来生成图片

canvas.toDataURL(mimeType, qualityArgument)

其中:mimeType表示canvas导出来的base64图片的类型,默认是png格式,也即是默认值是'image/png',我们也可以指定为jpg格式'image/jpeg'或者webp等格式。file对象中的file.type就是文件的mimeType类型,在转换时候正好可以直接拿来用(如果有file对象)。
qualityArgument表示导出的图片质量,只要导出为jpg和webp格式的时候此参数才有效果,默认值是0.92,是一个比较合理的图片质量输出参数,通常情况下,我们无需再设定。

下面我们来看看完整的html代码,可以直接运行的

点击查看剩余70%

{{collectdata}}

网友评论0