#鸿蒙通关秘籍#如何在HarmonyOS中压缩JPEG图片以满足指定大小要求?

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
樱花语HTTPS

要在HarmonyOS中压缩JPEG图片以满足指定大小,可以通过以下步骤实现:

  • 首先,从资源管理器获取要压缩的图片,创建ImageSource实例,并通过DecodingOptions设置解码参数,获取PixelMap对象。
  • 接下来,使用packing方式,首先设置图片质量参数(quality)为0,检查packing能压缩到的最小字节大小是否满足指定要求。如果满足,用二分查找最接近目标大小的quality值来压缩图片。
  • 如果不满足,用scale对图片缩放。通过while循环逐步减小0.4倍的缩放比例来压缩图片,直到找到最接近目标大小的压缩数据。
  • 最后,保存压缩后的图片到文件系统。

以下为代码实现:

// 获取resourceManager资源管理器
const resourceMgr = this.context.resourceManager;
resourceMgr.getRawFileContent('beforeCompression.jpeg').then((fileData) => {
  const buffer = fileData.buffer.slice(0);
  const imageSource = image.createImageSource(buffer);
  const decodingOptions = { editable: true, desiredPixelFormat: 3 };
  imageSource.createPixelMap(decodingOptions).then((originalPixelMap) => {
    compressedImage(originalPixelMap, this.maxCompressedImageSize).then((showImage) => {
      this.compressedImageSrc = fileUri.getUriFromPath(showImage.imageUri);
      this.compressedByteLength = showImage.imageByteLength;
      this.afterCompressionSize = (this.compressedByteLength / BYTE_CONVERSION).toFixed(1);
    });
  });
});
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS图片压缩不到指定大小
552浏览 • 1回复 待解决
如何图片PixelMap压缩指定大小
1760浏览 • 1回复 待解决
图片压缩指定宽高和限制大小
887浏览 • 1回复 待解决
如何将PixelMap压缩指定大小
939浏览 • 1回复 待解决
图片压缩尺寸和大小问题
345浏览 • 1回复 待解决