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压缩
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 需求 在canvas插入图片当做背景图 在图片上进行涂鸦、图画 可以更换画笔粗细、颜色 可以实现撤销上一步操作 最...
- 小程序里面canvas.drawImage中的image必须是本地图片,所以需要先下载到uni.downloadF...
- 微信小程序canvas组件官方文档 微信小程序canvas组件官方文档canvas API canvas组件介绍 ...