html img图片等比例缩放_前端如何针对上传图片进行压缩处理

在前端开发中,尤其是公众号开发时,手机上传的拍照图片都是非常大,基本都是几兆以上,对于应用存储来说,非常这个图片功能就非常占用磁盘空间,而且在上传下载时,也占用太多的网络资源,

但遇到这种情况时,就需要进入图片等比率进行缩放,把图片压缩至KB级别。以下是前端压缩函数,基本带有注释,供大家参考

调用压缩函数

fc339160f5210afff0d72bcec556ba5a.png

压缩函数

b47f0a93ed47e4787e62e1968d5b3d4b.png

源码如下:

调用压缩函数

dealImage(this.result, { //压缩 width: 1000 //设置宽为1000,高跟着宽进入缩放 }, function (base) {//压缩返回的文件 api.uploadImgBase64({//调用后台的图片上传接口 'fileName':'img.jpg',//文件上传名 'type':'img',//文件类型 'base64':base//文件传输类型}).then(res => {......}

压缩函数

dealImage(path, obj, callback) {//path图片路径,obj为对象,包含宽和高,callback回调参数 var img = new Image(); img.src = path; img.onload = function(){ var that = this; // 默认按比例压缩 var w = that.width, h = that.height, scale = w / h; w = obj.width || w; h = obj.height || (w / scale); var quality = 0.9; // 默认图片质量为0.5 //生成canvas var canvas = document.createElement('canvas'); var ctx = canvas.getContext('2d'); // 创建属性节点 var anw = document.createAttribute("width"); anw.nodeValue = w; var anh = document.createAttribute("height"); anh.nodeValue = h; canvas.setAttributeNode(anw); canvas.setAttributeNode(anh); ctx.drawImage(that, 0, 0, w, h); // 图像质量 if(obj.quality && obj.quality <= 1 && obj.quality > 0){ quality = obj.quality; } // quality值越小,所绘制出的图像越模糊 var base64 = canvas.toDataURL('image/jpeg', quality ); // 回调函数返回base64的值 callback(base64); }}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值