uniapp循环压缩图片到指定大小

// 图片压缩递归,小于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)
		}
	})
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值