如何将图片PixelMap压缩到指定大小

目前只看到支持质量压缩,未找到其他方式压缩图片到指定大小,如将PixelMap压缩至30KB。

HarmonyOS
2024-05-08 23:21:03
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
沉默如海
photoSelect() { 
  const photoSelectOptions = new picker.PhotoSelectOptions(); 
  photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE; 
  photoSelectOptions.maxSelectNumber = 5 
 
  const photoPicker = new picker.PhotoViewPicker(); 
  photoPicker.select(photoSelectOptions) 
    .then(async (photoSelectResult) => { 
      let uri = photoSelectResult.photoUris[0] 
      let file = fs.openSync(uri, fs.OpenMode.READ_ONLY) 
      this.compressPictures(file) 
 
    }) 
} 
 
compressPictures(file: fs.File, data?: ArrayBuffer, size: number = 30, quality: number = 99): void | ArrayBuffer { 
  if (data) { 
    const currentSize = data.byteLength / 1024 
    if (currentSize <= size || quality === 1) { 
      return data 
    } 
  } 
  const imagePackerApi = image.createImagePacker(); 
  const imageSourceApi = image.createImageSource(file.fd); 
  let packOpts: image.PackingOption = { format: “image/jpeg”, quality: quality } 
 
  imagePackerApi.packing(imageSourceApi, packOpts) 
    .then((ret: ArrayBuffer) => { 
      if (data && ret.byteLength === data.byteLength) { 
        return ret 
      } 
      return this.compressPictures(file, ret, size, quality-1) 
    }).catch((err: BusinessError) => { 
    console.log(lbh) 
    return false 
  }) 
}
  • 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.
分享
微博
QQ
微信
回复
2024-05-09 14:33:36
相关问题
如何将PixelMap压缩到指定大小
2113浏览 • 1回复 待解决
HarmonyOS图片压缩不到指定大小
1381浏览 • 1回复 待解决
图片压缩指定宽高和限制大小
1746浏览 • 1回复 待解决
HarmonyOS 如何将图片压缩并转成base64
1245浏览 • 1回复 待解决
HarmonyOS如何将Component转换PixelMap
1380浏览 • 1回复 待解决
HarmonyOS如何将PixelMap保存到相册?
1519浏览 • 1回复 待解决
如何将PixelMap图片base64字符串?
1546浏览 • 1回复 待解决
如何将图片base64字符串转PixelMap
1601浏览 • 1回复 待解决
HarmonyOS 如何将PixelMap保存为沙箱
926浏览 • 1回复 待解决
如何将app.media.app_icon,转换为PixelMap
3026浏览 • 1回复 待解决
如何将PixelMap的数据存储到数据库中
2683浏览 • 1回复 待解决
HarmonyOS 如何将图片裁切成圆形
705浏览 • 1回复 待解决
ets中如何将图片转为byte[]?
4233浏览 • 1回复 待解决
HarmonyOS 如何将图片插入到相册
1276浏览 • 1回复 待解决