const compressImage = (index, tempImageArr,callback,newArr=[])=> {
let temp = tempImageArr[index];
if (index < tempImageArr.length) {
uni.getImageInfo({
src: tempImageArr[index],
success: info => {
let ratio = 0.8; //压缩比例
let quality = 0.8; //图片质量
let canvasWidth = info.width;
let canvasHeight = info.height;
while (canvasWidth > 2000 || canvasHeight > 2000) {
//比例取整
canvasWidth = Math.trunc(info.width / ratio)
canvasHeight = Math.trunc(info.height / ratio)
ratio += 0.1;
}
if(/IOS|ios|Ios/.test(systemInfo.platform)) {
uni.compressImage({
quality: quality,
src: temp,
success: res => {
newArr.push({ compress: res.tempFilePath, temp});
compressImage(++index, tempImageArr, callback, newArr);
},
fail:e => {
}
})
} else {
uni.createSelectorQuery().selectAll('#canvas').node(res => {
const canvas = res[0].node;
canvas.width = canvasWidth;
canvas.height = canvasHeight;
const ctx = canvas.getContext('2d');
const image = canvas.createImage();
image.src = tempImageArr[index];
image.onload = () => {
ctx.drawImage(image, 0, 0, canvasWidth, canvasHeight);
uni.canvasToTempFilePath({
canvas: canvas,
fileType: 'jpg',
quality: quality,
success: image => {
newArr.push({ compress: image.tempFilePath, temp});
compressImage(++index, tempImageArr, callback, newArr);
},
fail: err => {
console.log(err)
}
})
}
}).exec()
}
},
fail: e => {}
})
} else {
callback(newArr)
}
}
图片压缩,ios使用uni,安卓使用canvas压缩
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 需求 在canvas插入图片当做背景图 在图片上进行涂鸦、图画 可以更换画笔粗细、颜色 可以实现撤销上一步操作 最...
- 小程序里面canvas.drawImage中的image必须是本地图片,所以需要先下载到uni.downloadF...
- 微信小程序canvas组件官方文档 微信小程序canvas组件官方文档canvas API canvas组件介绍 ...