unipp上传图片压缩方法

/**
 * 递归压缩微信图片
 * @param url 图片路径
 * @param count 已递归次数(有可能压缩不到想要的大小,所以得限制次数)
 * @param isReturnBase64 是否返回base64
 * @return
 */
export function recursionCompressWechat(url, count, isReturnBase64) {
	return new Promise((resolve, reject) => {
		if (count > 5) {
			resolve(url);
			return;
		}

		uni.compressImage({
			src: url,
			quality: 40,
			success: (resCompress) => {
				console.log(resCompress, "压缩后");
				uni.getFileInfo({
					filePath: resCompress.tempFilePath,
					success: (resFileInfo) => {
						if (resFileInfo.size > 1024 * 1024) {
							count++;
							recursionCompressWechat(resCompress.tempFilePath, count,
									isReturnBase64)
								.then(result => resolve(result))
								.catch(error => reject(error));
						} else {
							if (isReturnBase64) {
								WechatTobase4(resCompress.tempFilePath)
									.then(base64Url => resolve(base64Url))
									.catch(error => reject(error));
							} else {
								resolve(resCompress.tempFilePath);
							}
						}
					},
					fail: (error) => {
						reject(error);
					}
				});
			},
			fail: (error) => {
				reject(error);
			}
		});

		function WechatTobase4(url) {
			return new Promise((resolve, reject) => {
				uni.getFileSystemManager().readFile({
					filePath: url,
					encoding: "base64",
					success: (res) => {
						let base64Url = "data:image/png;base64," + res.data;
						resolve(base64Url);
					},
					fail: (error) => {
						console.log(error, "wxPathTobase64-error");
						reject(error);
					}
				});
			});
		}
	});
}
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值