如何将PixelMap压缩到指定大小

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

HarmonyOS
2024-05-21 22:29:21
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
PinkFish

目前没有直接的接口支持将PixelMap压缩到指定大小,可以参考如下方案实现:

参考代码:

@Entry 
@Component 
struct Index { 
  ...... 
  
  // 压缩图片并保存到相册 
  async compression(file: fs.File, data?: ArrayBuffer, size: number = 30, quality: number = 99) : Promise<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 }; 
  
    let result = await imagePackerApi.packing(imageSourceApi, packOpts); 
    if (data && result.byteLength === data.byteLength){ 
      return result; 
    } 
    return this.compression(file, result, size, quality - 1); 
  } 
}
分享
微博
QQ
微信
回复
2024-05-22 21:41:31
相关问题
如何将图片PixelMap压缩到指定大小
507浏览 • 1回复 待解决
图片压缩指定宽高和限制大小
360浏览 • 1回复 待解决
如何将app.media.app_icon,转换为PixelMap
723浏览 • 1回复 待解决
如何将PixelMap的数据存储到数据库中
721浏览 • 1回复 待解决
如何将ArrayBuffer转成string
652浏览 • 1回复 待解决
如何将Map/HashMap转为Object对象?
532浏览 • 1回复 待解决
如何将 Checkbox 的文字放在左边 ?
9476浏览 • 1回复 待解决
ets中如何将图片转为byte[]?
1816浏览 • 1回复 待解决
如何将背景颜色设置为透明
1043浏览 • 1回复 待解决
如何将三方应用改为系统应用
467浏览 • 2回复 已解决
如何将像素点保存到图片文件
1085浏览 • 1回复 待解决
求大佬告知如何将http文件上传
516浏览 • 1回复 待解决
如何将so文件导入,并完成调用
670浏览 • 1回复 待解决
如何将har库迁移为hsp库
430浏览 • 1回复 待解决
如何将页面设置为深色模式
853浏览 • 1回复 待解决
如何将Resource资源对象转成string类型
1397浏览 • 1回复 待解决
如何将easymock的数据插入到数据库?
1058浏览 • 1回复 待解决