首页 > 其他分享 >《鸿蒙/Harmony | 开发日志》图片压缩

《鸿蒙/Harmony | 开发日志》图片压缩

时间:2024-09-18 16:46:27浏览次数:10  
标签:鸿蒙 buffer 压缩 compressionRatio Harmony 日志 图片

一般在做APP 头像、背景等功能的时候,调用系统选择图片功能,上传给服务端,图片都非常的大,相机像素越高图片就越大。一般都有几 M,甚至 10M以上的,这个时候一般需要压缩图片,变成非常小的图片,如果不压缩图片,将几 M 的图片作为头像,用户访问个头像发现下载要个 1-2 秒,就体验非常差。

压缩图片可以服务端压缩,同时也可以客户端直接压缩好再上传。

鸿蒙自带提供了官方 API 压缩图片。

压缩图片

官方提供了 2 类接口,一类是读取源文件叫做解码,一类是将解码源文件处理成别的格式或其他叫做编码。压缩图片就利用上面两个接口即可完成。

下面是封装好的方法:

/**
 * 压缩图片
 * @param buffer 二进制
 * @param contentType image/jpeg 保存后的文件格式
 * @param compressionRatio 1 就是 100%, 0.5 就是50%
 * @returns
 */
export async function compression(buffer: ArrayBuffer, contentType: string, compressionRatio: number = 1) {
	  // 这里判断 1,是因为压缩的时候传了 100%,也会丢失一点精度,所以直接返回了。
    if (compressionRatio == 1) {
        return buffer
    }
    const imageSource: image.ImageSource = image.createImageSource(buffer);

    const imagePackerApi = image.createImagePacker();
    const bf = await imagePackerApi.packing(imageSource, { format: contentType, quality: compressionRatio * 100 })

    return bf
}

至于如何读取源文件变成buffer,可以参考之前的文章《鸿蒙/Harmony | 开发日志》选择文件或拍照功能

参考

  1. 【鸿蒙官方文档】图片解码
  2. 【鸿蒙官方文档】图片编码
  3. 鸿蒙/Harmony | 开发日志》选择文件或拍照功能

标签:鸿蒙,buffer,压缩,compressionRatio,Harmony,日志,图片
From: https://www.cnblogs.com/xakoy/p/18418836

相关文章

  • 基于OpenHarmony(开源鸿蒙)的智慧医疗综合应用系统
    基于【OpenHarmony的智慧医疗综合应用系统】一.了解OpenHarmony(开源鸿蒙)进行应用开发1.了解OpenHarmony架构2.获取开发环境和工具3.创建项目4.开发应用5.调试和测试6.发布应用7.学习和社区支持二.基于开源鸿蒙(OpenHarmony)的智慧医疗综合应用系统业务场景设计......
  • laravel: 日志配置
    一,日志按天切分:修改.envroot@lhdpc:/data/api#vi.env指定LOG_CHANNEL值为daily即可,代码:LOG_CHANNEL=daily二,配置laravel日志中记录url/方法/参数1,config/logging.php'daily'=>['driver'=>'daily','path......
  • 史无前例,移植V8虚拟机到纯血鸿蒙系统
    作者:京东科技于飞跃一、背景   如图所示,Roma框架是我们自主研发的动态化跨平台解决方案,已支持iOS,android,web三端。目前在京东金融APP已经有200+页面,200+乐高楼层使用,为保证基于Roma框架开发的业务可以零成本、无缝运行到鸿蒙系统,需要将Roma框架适配到鸿蒙系统。Rom......
  • 鸿蒙跨端实践-布局方案介绍
    作者:京东科技刘宁一、前言动态化使用jue语言(开发风格与Vue一致)开发,对于视图的布局采用了标准的Flex布局方式。对于列表类视图,动态化提供了<scroll>、<slider>、<recycle-list>、<waterfall>等标签,将子视图的布局管理封装到标签中实现,业务只需要针对标签简单地设置相关......
  • Docker限制日志文件大小及个数
    对单个容器生效dockerrun--log-optmax-size=10m--log-optmax-file=3全局容器生效vim/etc/docker/daemon.json{"log-driver":"json-file","log-opts":{"max-size":"200m","max-file"......
  • OpenHarmony WIFI关键命令
    OpenHarmonyWIFI关键命令一remount开发板hdcshellmount-orw,remount/二 导入wifi_client hdcfilesend  D:\hukai\Net6\process\0509\wifi_client /system/binhdcshellchmod 777 /system/bin/wifi_clienthdcfilerecv /system/bin/wifi_cli......
  • OpenHarmony WIFI代码关键目录
    OpenHarmonyWIFI代码关键目录一wpa_supplicant代码F:\CodeSpace\Openharmony_20231026\third_party\wpa_supplicant\wpa_supplicant-2.9_standard  二WIFIFramework层代码F:\CodeSpace\Openharmony_20231026\foundation\communication\wifi 三openssl代码  ......
  • 导购电商平台的日志管理与监控体系
    导购电商平台的日志管理与监控体系大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在导购电商平台中,日志管理与监控体系是保证系统稳定性和性能的关键组件。通过合理的日志管理与监控体系,我们可以实时掌握系统运行状态、快速发现和解决问题,从而......
  • 通过日志恢复sql server数据库
    鱼弦:公众号:红尘灯塔,CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)通过日志恢复SQLServer数据库SQLServer提供了两种类型的日志备份:完整事务日志备份: 包含自上次完整备份以来对......
  • 鸿蒙OS 分布式任务调度
    鸿蒙OS分布式任务调度概述在HarmonyOS中,分布式任务调度平台对搭载HarmonyOS的多设备构筑的“超级虚拟终端”提供统一的组件管理能力,为应用定义统一的能力基线、接口形式、数据结构、服务描述语言,屏蔽硬件差异;支持远程启动、远程调用、业务无缝迁移等分布式任务。分布......