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.');
  }
})
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.

文档链接:

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

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

HarmonyOS
2024-12-27 15:35:58
浏览
收藏 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);
})
})
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

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);
})
})
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
分享
微博
QQ
微信
回复
2024-12-27 19:09:55


相关问题
HarmonyOS 图片压缩示例?
437浏览 • 2回复 待解决
HarmonyOS 图片压缩问题
975浏览 • 1回复 待解决
HarmonyOS 图片压缩工具
698浏览 • 1回复 待解决
HarmonyOS 如何压缩本地图片
835浏览 • 1回复 待解决
HarmonyOS图片压缩不到指定大小
1411浏览 • 1回复 待解决
HarmonyOS 图片压缩图片转base64
1211浏览 • 1回复 待解决
HarmonyOS 图片的加载与压缩服务
916浏览 • 1回复 待解决
HarmonyOS 怎么对图片进行压缩上传
928浏览 • 1回复 待解决
HarmonyOS 图片的加载与压缩服务?
936浏览 • 0回复 待解决
flutter适配HarmonyOS图片压缩的库
927浏览 • 1回复 待解决
HarmonyOS 图片保存失败
881浏览 • 1回复 待解决
HarmonyOS 上传图片失败
1206浏览 • 1回复 待解决
HarmonyOS 图片上传失败
820浏览 • 1回复 待解决
HarmonyOS 如何压缩图片之后再上传?
651浏览 • 1回复 待解决
HarmonyOS 图片、视频文件压缩的demo
562浏览 • 1回复 待解决
使用图片压缩API的参数影响
1386浏览 • 1回复 待解决
HarmonyOS 相册选择后压缩图片大小
836浏览 • 1回复 待解决