前言图片压缩在上传、分享等场景中非常实用可以减少传输时间和存储空间。pura/harmony-utils的ImageUtil封装了图片压缩方法支持质量压缩和尺寸压缩。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、ImageUtil压缩核心APIImageUtil提供了以下图片压缩方法方法说明返回类型使用场景compressPixelMap(pixelMap, quality)质量压缩ArrayBuffer减小文件大小scalePixelMap(pixelMap, scale)缩放压缩PixelMap缩小图片尺寸1.1 核心特性简洁易用封装复杂API为一行调用降低使用门槛类型安全完整的TypeScript类型定义编译期即可发现错误异常处理内置异常捕获机制避免运行时崩溃双模式压缩支持质量压缩和尺寸压缩两种方式1.2 压缩方式对照压缩方式参数效果适用场景质量压缩0-100降低图片质量JPEG图片上传缩放压缩0-1缩小图片尺寸缩略图生成二、完整使用步骤2.1 安装依赖ohpminstallpura/harmony-utils2.2 质量压缩import{ImageUtil}frompura/harmony-utils;Button(质量压缩(50%)).width(100%).onClick(async(){try{letcompressedawaitImageUtil.compressPixelMap(this.pixelMap,50);this.result压缩成功 ✅\n质量: 50%\n压缩后大小:${compressed.byteLength}字节;}catch(e){this.result异常: e;}})2.3 缩放压缩Button(缩放压缩(50%)).width(100%).onClick(async(){try{letscaledawaitImageUtil.scalePixelMap(this.pixelMap,0.5);this.result缩放成功 ✅\n缩放比例: 50%;}catch(e){this.result异常: e;}})三、完整页面示例import{ImageUtil}frompura/harmony-utils;EntryComponentstruct ImageCompressDemo{Stateresult:string;build(){Column({space:12}){Button(质量压缩).width(100%).onClick((){this.result质量压缩: 降低图片质量\n参数0-100值越小文件越小;});Button(缩放压缩).width(100%).onClick((){this.result缩放压缩: 缩小图片尺寸\n参数0-1值越小尺寸越小;});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 自适应压缩策略import{ImageUtil}frompura/harmony-utils;asyncfunctionsmartCompress(pixelMap:PixelMap,maxSizeKB:number):PromiseArrayBuffer{letquality100;letresult:ArrayBuffer;do{resultawaitImageUtil.compressPixelMap(pixelMap,quality);quality-10;}while(result.byteLengthmaxSizeKB*1024quality10);returnresult;}4.2 缩略图生成asyncfunctiongenerateThumbnail(pixelMap:PixelMap,maxSize:number200):PromisePixelMap{letinfopixelMap.getImageInfo();letscaleMath.min(maxSize/info.size.width,maxSize/info.size.height);if(scale1)returnpixelMap;returnawaitImageUtil.scalePixelMap(pixelMap,scale);}五、注意事项质量参数质量压缩参数0-100值越小文件越小缩放比例缩放压缩参数0-1值越小尺寸越小格式影响质量压缩对JPEG有效PNG无损格式效果有限初始化依赖使用前需确保AppUtil.init()已调用异步操作压缩方法为异步需使用await六、常见问题Q1: 质量压缩后图片变模糊质量参数设置过低会导致图片模糊建议不低于50。Q2: PNG图片质量压缩效果不明显PNG是无损格式质量压缩主要对JPEG有效。PNG图片建议使用缩放压缩。Q3: 如何在压缩率和清晰度之间平衡建议先缩放到合适尺寸再进行质量压缩通常质量60-80之间效果较好。Q4: 压缩后如何获取文件大小质量压缩返回ArrayBuffer通过buffer.byteLength获取字节数。总结ImageUtil的图片压缩方法为图片优化提供了双模式支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以根据场景选择质量压缩或缩放压缩。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。