通过canvas实现批量压缩图片的问题?
使用的云开发,要实现压缩图片就只能放到前端。
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