通过canvas实现批量压缩图片的问题?
发布于 5 年前 作者 guiying14 7906 次浏览 来自 问答

使用的云开发,要实现压缩图片就只能放到前端。

wx.chooseImage提供了压缩,但据说压缩效果不好,而且要实现同时上传压缩图和原图。所以采用网上画布的间接压缩的方法。

compressImg是一个通过canvas异步压缩的函数,返回一个promise。参数res是原图路径数组,参数i是压缩的下标

上传两张图片测试,发现:

1.压缩的一直是第二张

2.把i改为0可以输出第一张

var promiseArr=[]
for(let i=0;i<length/2;i++){
  promiseArr.push((
    async function(i){
      console.log(i)
      const img= await that.compressImg(res,i)
      console.log(img)
      return img
    }
  )(i))
}

Promise.all(promiseArr).then(
  
)
//输出结果
0
compressImg中的0
1
compressImg中的1
http://tmp/wxa43f575244eec70d.o6zAJswx17W25uU3I-tKQ_JSb-so.aQGlYmVmZV56a06d8d9f2b95a45594cf4820873a7632.jpg
http://tmp/wxa43f575244eec70d.o6zAJswx17W25uU3I-tKQ_JSb-so.nhcNUnzgQjCtad09777fb031d2ee1009f7b3eebd44a6.jpg
回到顶部