上述代码返回了code-5,msg为输出图片失败。
- 发布:2023-12-12 10:51
- 更新:2023-12-12 10:55
- 阅读:285
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: win10
手机系统: Android
手机系统版本号: Android 10
手机厂商: 华为,小米,oppo,等都发现存在
手机机型: 荣耀Play5,小米8,华为P30 Pro,OPPO R17,华为畅享10 plus,华为P30
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: CLI
CLI版本号: 2.0.2-3090820231124001
示例代码:
操作步骤:
可使用华为或其他平台的云测设备,对这个函数的bug进行复现。
可使用华为或其他平台的云测设备,对这个函数的bug进行复现。
预期结果:
应正常将图片进行压缩处理
应正常将图片进行压缩处理
实际结果:
安卓10内返回code -5
安卓10内返回code -5
bug描述:
项目打包采用的是当时最新版本的uniapp正式版版本,2.0.2-3090820231124001 ,这个问题目前能确定在部分安卓10内存在,但高版本的安卓11,安卓12,安卓13,安卓14,暂时未发现有相关设备存在这个问题。
当src对应的图片是从相册中选择时,安卓10会报错code -5
代码段如下:
/**
* APP-PLUS 压缩图片
*/
export const compressAppImage = (src, quality) => {
// let index = src.lastIndexOf(".");
let index = src.lastIndexOf("/");
let imgDirname = src.substring(0, index); //图片的原始地址
let imgName =
"image_" + new Date().getTime() + "_" + randomstring.generate(10); //压缩后的文件
let extIndex = src.lastIndexOf(".");
let imgType = src.substring(extIndex + 1, src.length); //图片的类型
// iOS 拍照,直接旋转
// 转换 heic 格式
if (imgType.toLowerCase() === "heic") {
imgType = "jpg";
}
return new Promise((resolve, reject) => {
plus.zip.compressImage(
{
src,
dst: imgDirname + "/" + imgName + "." + imgType,
quality,
},
(res) => {
resolve(res.target);
},
(err) => {
reject(err);
}
);
});
};
9***@qq.com (作者)
src参数是调用后,从 selectedResult.tempFilePaths 内遍历获取的
let [err, selectedResult] = await uni.chooseImage({
sourceType: ["camera", "album"], // 拍照、相册
sizeType: ["original"], // 原图
count: allowLength,
});
重点是从相册选择图片,直接拍照在安卓10下似乎是可以的。
9***@qq.com (作者)
压缩的quality是100或98
2023-12-12 12:40