HarmonyOS 图片压缩失败

API 11的设备,调用packing api(api 11新增)图片打包成文件报错62980115

调用padking (8+)图片打包为buffer报错inner error

// imageUri表示准备打包的源图片,无论该图片来源于文件选择器的uri,还是cache目录下的uri,或者file目录下的uri,都不能跑通程序
const imageSourceApi : image.ImageSource = image.createImageSource(imageUri);
const imagePackerApi : image.ImagePacker = image.createImagePacker();

// padking (8+)
let packOpts : image.PackingOption = { format: "image/jpeg", quality: 98 };
imagePackerApi.packing(imageSourceApi, packOpts)
  .then( (data : ArrayBuffer) => {
    console.log('packing succeeded.' + data);
  }).catch((error : BusinessError) => {
  console.error('packing failed.' + JSON.stringify(error));
})

// padking (11+)
const filePath : string = this.context.cacheDir + "/image_new.jpg";
let file = fs.openSync(filePath, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE);
imagePackerApi.packToFile(imageSourceApi, file.fd, packOpts, (err : BusinessError) => {
  if(err) {
    console.error('压缩图片 packToFile failed. ' + JSON.stringify(err));
  } else {
    console.log('压缩图片 packToFile succeeded.');
  }
})

文档链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-image-V5

上传多张图片,图片需要压缩

HarmonyOS
23h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

我们这边测试了两种方法能成功,麻烦验证一下

packing(8):

const imagePackerApi = image.createImagePacker();
let packOpts: image.PackingOption = { format: "image/jpeg", quality: 98 };
const context: Context = getContext(this);
const path: string = context.cacheDir + "/pixel_map8.jpg";
imagePackerApi.packing(this.pixelmap, packOpts).then((data: ArrayBuffer) => {
  // data 为打包获取到的文件流,写入文件保存即可得到一张图片
  if (data) {
    let file = fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
    fs.write(file.fd, data).then(async (writeLen) => {
      console.info("write data to file succeed and size is:" + writeLen);
      fs.closeSync(file);
    }).catch((err: BusinessError) => {
      console.info("write data to file failed with error message: " + err.message + ", error code: " + err.code);
    });
  }
}).catch((error: BusinessError) => {
  console.error('Failed to pack the image. And the error is: ' + error);
})
})

packToFile(11):

const imagePackerApi = image.createImagePacker();
let packOpts: image.PackingOption = { format: "image/jpeg", quality: 98 };
const context: Context = getContext(this);
const path: string = context.cacheDir + "/pixel_map11.jpg";
let file = fs.openSync(path, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE);
imagePackerApi.packToFile(this.pixelmap, file.fd, packOpts).then(() => {
  // 直接打包进文件
}).catch((error: BusinessError) => {
  console.error('Failed to pack the image. And the error is: ' + error);
})
})
分享
微博
QQ
微信
回复
20h前
相关问题
HarmonyOS 图片压缩问题
73浏览 • 1回复 待解决
HarmonyOS 图片压缩工具
42浏览 • 1回复 待解决
HarmonyOS图片压缩不到指定大小
653浏览 • 1回复 待解决
HarmonyOS 图片压缩图片转base64
342浏览 • 1回复 待解决
HarmonyOS 图片的加载与压缩服务
201浏览 • 1回复 待解决
HarmonyOS 怎么对图片进行压缩上传
86浏览 • 1回复 待解决
flutter适配HarmonyOS图片压缩的库
226浏览 • 1回复 待解决
HarmonyOS 图片的加载与压缩服务?
243浏览 • 0回复 待解决
HarmonyOS 上传图片失败
173浏览 • 1回复 待解决
HarmonyOS 如何压缩图片之后再上传?
56浏览 • 1回复 待解决
HarmonyOS 图片上传失败
46浏览 • 1回复 待解决
使用图片压缩API的参数影响
542浏览 • 1回复 待解决
HarmonyOS 相册选择后压缩图片大小
1浏览 • 0回复 待解决
图片压缩尺寸和大小问题
429浏览 • 1回复 待解决
图片压缩指定宽高和限制大小
1017浏览 • 1回复 待解决
HarmonyOS Web加载http图片失败
36浏览 • 1回复 待解决