更新记录
1.0.0(2026-10-11)
- 首次发布。
- 新增
compressImage 图片压缩接口,支持质量压缩与等比尺寸缩放。
- 支持 Android / iOS / Web / HarmonyOS 四端。
- 支持
jpg / png 输出格式,quality 参数仅对 jpg 生效。
- 统一错误码:9010001 参数错误、9010002 读取失败、9010003 解码失败、9010004 编码保存失败、9010005 平台不支持。
平台兼容性
uni-app(5.0)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| √ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| × |
× |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
uni-app x(5.0)
| Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
| √ |
√ |
√ |
√ |
√ |
× |
其他
| 多语言 |
暗黑模式 |
宽屏模式 |
蒸汽模式 |
| × |
× |
× |
√ |
hy-image-compress 图片压缩
跨平台图片压缩 UTS 插件,基于各端原生能力实现质量压缩与尺寸缩放,同一套 API 适配 Android / iOS / Web / HarmonyOS。
平台支持
| 平台 |
支持 |
实现方式 |
| Android |
√ |
BitmapFactory + Bitmap.compress |
| iOS |
√ |
ImageIO + UIGraphicsImageRenderer |
| Web |
√ |
Canvas + toBlob / toDataURL |
| HarmonyOS |
√ |
@ohos.multimedia.image (ImageSource / ImagePacker) |
小程序端暂不支持。
iOS 需在 macOS 环境下编译验证。
安装
将 hy-image-compress 目录放入项目的 uni_modules 下即可,无需手动注册(uni_modules 自动引入)。
使用
uni-app x
import { compressImage } from '@/uni_modules/hy-image-compress'
compressImage({
src: tempFilePath,
quality: 80,
maxWidth: 1280,
maxHeight: 1280,
format: 'jpg',
success: (res) => {
console.log('压缩成功', res.tempFilePath, res.size, res.width, res.height)
},
fail: (err) => {
console.error('压缩失败', err.errCode, err.errMsg)
},
complete: (res) => {
console.log('调用结束', res)
}
})
uni-app (Vue2 / Vue3)
import { compressImage } from '@/uni_modules/hy-image-compress'
compressImage({
src: tempFilePath,
quality: 80,
maxWidth: 1280,
maxHeight: 1280,
format: 'jpg',
success(res) {},
fail(err) {},
complete(res) {}
})
API
compressImage(options)
压缩图片。
| 参数 |
类型 |
必填 |
说明 |
| src |
string |
是 |
待压缩图片路径。App / 鸿蒙支持本地路径、临时文件路径(file:// 开头);Web 支持网络地址、blob/objectURL、base64 dataURL |
| quality |
number |
否 |
压缩质量,取值 0-100,默认 80,仅对 jpg 生效 |
| maxWidth |
number |
否 |
压缩后最大宽度(px),≤0 或不传表示不限制 |
| maxHeight |
number |
否 |
压缩后最大高度(px),≤0 或不传表示不限制 |
| format |
string |
否 |
输出格式,'jpg'(默认)或 'png' |
| success |
function |
否 |
成功回调 |
| fail |
function |
否 |
失败回调 |
| complete |
function |
否 |
结束回调(成功、失败均执行) |
成功回调 res
| 字段 |
类型 |
说明 |
| tempFilePath |
string |
压缩后图片路径(Web 为 objectURL / dataURL) |
| size |
number |
压缩后文件大小(字节) |
| width |
number |
压缩后宽度(px) |
| height |
number |
压缩后高度(px) |
| originalSize |
number |
压缩前文件大小(字节) |
| originalWidth |
number |
原始宽度(px) |
| originalHeight |
number |
原始高度(px) |
错误码
| errCode |
说明 |
| 9010001 |
参数错误 |
| 9010002 |
图片读取失败(文件不存在或无法访问) |
| 9010003 |
图片解码失败 |
| 9010004 |
图片编码或保存失败 |
| 9010005 |
当前平台不支持该能力 |
缩放规则
- 等比缩放,只缩小不放大;
- 同时设置
maxWidth、maxHeight 时,取能满足两个限制的最小比例;
- 宽高均为限制值以内时保持原尺寸,仅做质量压缩。
注意事项
quality 仅对 jpg 生效,png 为无损压缩,忽略该参数。
- App / 鸿蒙端返回的
tempFilePath 为应用缓存目录下的临时文件,如需长期保留请自行转存。
- 鸿蒙端图片编码为异步接口,回调为异步触发。
- 未配置鸿蒙应用包名与签名证书时,仅能编译打包,无法安装到设备运行。
更新日志
见 changelog.md