第十五篇:element-Upload 上传,图片上传前压缩的方法

export function compress(fileObj, callback) {
  console.log("fileObj上",fileObj)
  try {
    const image = new Image()
    image.src = URL.createObjectURL(fileObj)
    image.onload = function() {
      const that = this
      // 默认按比例压缩
      let w = that.width
      let h = that.height
      const scale = w / h
      console.log("scale",scale,w,h,fileObj)
      w = fileObj.width || w
      h = fileObj.height || (w / scale)
      console.log(fileObj.width ,fileObj.height,w,h)
      console.log("image",image,fileObj.width)
      while (w >= 1280 || h >= 960) {
        w *= 0.4
        h *= 0.4
      }

      let quality = 0.9 // 默认图片质量为0.7
      // 生成canvas
      const canvas = document.createElement('canvas')
      const ctx = canvas.getContext('2d')
      // 创建属性节点
      const anw = document.createAttribute('width')
      anw.nodeValue = w
      const anh = document.createAttribute('height')
      anh.nodeValue = h
      canvas.setAttributeNode(anw)
      canvas.setAttributeNode(anh)
      ctx.drawImage(that, 0, 0, w, h)
      // 图像质量
      console.log("图像质量",fileObj.quality)
      if (fileObj.quality && fileObj.quality <= 1 && fileObj.quality > 0) {
        console.log("fileObj",fileObj)
        quality = fileObj.quality 
      }
      // quality值越小,所绘制出的图像越模糊
      const data = canvas.toDataURL('image/jpeg', quality)
      // 压缩完成执行回调
      const newFile = convertBase64UrlToBlob(data,fileObj.name)
      console.log("newFile",newFile)
      callback(newFile)
    }
  } catch (e) {
    console.log('压缩失败!')
  }
}

上传的时候进行压缩
在这里插入图片描述

方法封装步骤:
写个方法
在这里插入图片描述
挂在原型上,哪个页面需要直接引用
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值