9***@qq.com
9***@qq.com
  • 发布:2023-12-12 10:51
  • 更新:2023-12-12 10:55
  • 阅读:285

【报Bug】plus 5+ api 中的 plus.zip.compressImage 在部分安卓10设备下报code -5

分类:uni-app

产品分类: 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

示例代码:

上述代码返回了code-5,msg为输出图片失败。

操作步骤:

可使用华为或其他平台的云测设备,对这个函数的bug进行复现。

预期结果:

应正常将图片进行压缩处理

实际结果:

安卓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);  
      }  
    );  
  });  
};
2023-12-12 10:51 负责人:无 分享
已邀请:
9***@qq.com

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

要回复问题请先登录注册