// 图片压缩递归,小于needsize跳出,needsize的单位是MB
export function imageCompress(file, needsize) {
return new Promise((resolve, reject) => {
try {
let {size,path} = file
let ddl = path.lastIndexOf(".");
let type = path.substring(ddl+1,path.length)
//大于指定大小needsize进行压缩,
if (needsize< (1024 * 1024)) {
resolve(file)
return false
}
//相同图片路径压缩会失效
let destination = "_doc/uniapp_temp/" + Date.parse(new Date()) + "_" + Math.random().toString() + "." + type
//遇到问题:只写压缩质量的话,程序会卡到一个最小压缩量无法跳出循环,所以加上了缩放大小
plus.zip.compressImage({
src: path,
dst: destination,
quality: 80,//压缩质量
width:"80%",//缩放大小
format:"png"//转化格式
},
function() {
uni.getFileInfo({
filePath: destination,
success: async (info) => {
let newFile = {
size: info.size,
path: destination
}
//递归
resolve(await imageCompress(newFile, types))
},
fail(err) {
console.log(err)
}
})
},
function(error) {
console.log(error)
});
} catch (e) {
console.log(e)
}
})
}
uniapp循环压缩图片到指定大小
最新推荐文章于 2024-07-05 16:23:37 发布