Vue+Element-ui上传图片压缩

vue+element-ui上传图片压缩

详情请查看element-ui官网

html
<el-upload
  :action="uploadUrl"
   list-type="picture-card"
   multiple
   accept=".png,.jpg,.jpeg,.bmp"
   :on-change="change"
   :before-upload="beforeUpload"
   :on-success="uploadSuccess">
   <i class="el-icon-plus"></i>
 </el-upload>
script
methods:{
	dataURItoBlob(dataURI, type) {
      var binary = atob(dataURI.split(',')[1]);
      var array = [];
      for(var i = 0; i < binary.length; i++) {
        array.push(binary.charCodeAt(i));
      }
      return new Blob([new Uint8Array(array)], {type: type});
    },
     beforeUpload(file) {
      const _this = this
      return new Promise(resolve => {
        let isLt2M = file.size / 1024 / 1024 < 1; // 判定图片大小是否小于4MB
        if (isLt2M) {
          console.log("小于1m");
          resolve(file);
        }
        const reader = new FileReader()
        const image = new Image()
        image.onload = (imageEvent) => {
          const canvas = document.createElement('canvas');
          const context = canvas.getContext('2d');
          const width = image.width * _this.imgQuality
          const height = image.height * _this.imgQuality
          canvas.width = width;
          canvas.height = height;
          context.clearRect(0, 0, width, height);
          context.drawImage(image, 0, 0, width, height);
          const dataUrl = canvas.toDataURL(file.type);
          const blobData = _this.dataURItoBlob(dataUrl, file.type);
          resolve(blobData)
        }
        reader.onload = (e => { image.src = e.target.result; });
        reader.readAsDataURL(file);
      })
    },
 }

传完图片右键另存为,查看图片,与原图相比,确实压缩了
亲测有效 ! :D ❀❀

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值