HarmonyOS 关于照片的压缩咨询

是否有提供压缩照片至指定大小的api?目前相机照片尺寸比较大,而上传至服务器有文件大小限制,需要压缩一下再上传。

HarmonyOS
2024-12-23 16:51:11
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
Excelsior_abit

压缩图片尺寸宽高大小,可以参考以下文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/image-transformation-V5并参考以下demo:

async dealWithPic(targetWidth:
number, targetHeight:
number, targetPixelSize:
number)
{
  let path = getContext().filesDir + '/pic.png'
  // path为已获得的沙箱路径
  const imageSource: image.ImageSource = image.createImageSource(path);
  let decodingOptions: image.DecodingOptions = {
    editable: true
  }
  //创建pixelMap
  this.pixelMap = await imageSource.createPixelMap(decodingOptions);
  console.log(this.pixelMap.getPixelBytesNumber());
  //指定压缩宽、高、大小
  // this.packingDetail(500, 500, 100)

  if (this.pixelMap) {
    console.info("before scaling pixelmap." + this.pixelMap.getPixelBytesNumber());
    let imageInfo = await this.pixelMap.getImageInfo();
    let a = this.pixelMap
    //计算压缩比
    let scaleX: number = targetWidth / imageInfo.size.width;
    let scaleY: number = targetHeight / imageInfo.size.height;
    this.pixelMap.scale(scaleX, scaleY, (err: BusinessError) => {
      if (err) {
        console.error("Failed to scale pixelmap.");
        return;
      } else {
        console.log("in scaling pixelmap." + a.getPixelBytesNumber());
      }
    });
  }
  let imagePackerApi = image.createImagePacker();
  let packOpts: image.PackingOption = { format: "image/jpeg", quality: 100 };
  imagePackerApi.packing(this.pixelMap, packOpts).then((data: ArrayBuffer) => {
    console.info("in 100 quality data" + data.byteLength)
    this.compressPictures(data, targetPixelSize, 99);
  });
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
分享
微博
QQ
微信
回复
2024-12-23 19:41:44


相关问题
关于图库中原图压缩比例咨询
868浏览 • 1回复 待解决
HarmonyOS zip压缩咨询
936浏览 • 1回复 待解决
HarmonyOS 关于vp问题咨询
890浏览 • 1回复 待解决
HarmonyOS 关于加密算法咨询
727浏览 • 1回复 待解决
HarmonyOS 关于struct index咨询
457浏览 • 1回复 待解决
HarmonyOS 关于仓颉咨询问题
776浏览 • 1回复 待解决
HarmonyOS 关于native aki库功能咨询
846浏览 • 1回复 待解决
HarmonyOS 关于页面埋点方案咨询
1207浏览 • 1回复 待解决
HarmonyOS 关于router.back问题咨询
1197浏览 • 1回复 待解决
HarmonyOS 关于GIF图片播放功能咨询
635浏览 • 1回复 待解决
关于数据缓存问题咨询
1114浏览 • 1回复 待解决
HarmonyOS 关于服务卡片刷新模式咨询
1362浏览 • 1回复 待解决
HarmonyOS 咨询关于短时后台任务
749浏览 • 1回复 待解决
HarmonyOS 关于Swiper+LazyForEach方案咨询
772浏览 • 1回复 待解决
关于系统定位缓存问题咨询
1564浏览 • 1回复 待解决
HarmonyOS 关于react-native-fs问题咨询
1061浏览 • 1回复 待解决