/**
* 递归压缩微信图片
* @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);
}
});
});
}
});
}
unipp上传图片压缩方法
于 2024-09-02 16:11:00 首次发布