更新记录
1.0.0(2025-10-13)
下载此版本
平台兼容性
uni-app(3.6.10)
Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
快应用-华为 |
快应用-联盟 |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
image-utils
uni-app 图片处理工具库,支持多平台图片压缩功能。
功能特性
安装
# 通过 uni_modules 安装
# 将 image-utils 文件夹放入项目的 uni_modules 目录中
API 文档
compressImage(src, options?)
压缩图片的主要方法。
参数
src
(string): 图片路径,必填
options
(CompressOptions): 压缩选项,可选
CompressOptions
参数 |
类型 |
默认值 |
说明 |
quality |
'low' \| 'medium' \| 'high' \| number |
'medium' |
压缩质量,数字范围 0-1 |
maxWidth |
number |
- |
最大宽度 |
maxHeight |
number |
- |
最大高度 |
format |
'jpg' \| 'png' \| 'webp' |
'jpg' |
输出格式(仅 H5 支持) |
onProgress |
(progress: number) => void |
- |
进度回调,返回 0-100 |
返回值
返回 Promise<CompressResult>
CompressResult
属性 |
类型 |
说明 |
tempFilePath |
string |
压缩后的图片路径 |
size |
number |
压缩后的文件大小 (KB) |
originalSize |
number |
压缩前的文件大小 (KB) |
ratio |
number |
压缩比例 (0-1) |
width |
number |
图片宽度 |
height |
number |
图片高度 |
使用示例
基础压缩
import { compressImage } from '@/uni_modules/image-utils';
// 选择图片并压缩
uni.chooseImage({
count: 1,
success: async (res) => {
const filePath = res.tempFilePaths[0];
try {
const result = await compressImage(filePath);
console.log('压缩成功:', result);
console.log(`原始大小: ${result.originalSize}KB`);
console.log(`压缩后: ${result.size}KB`);
console.log(`压缩比: ${(result.ratio * 100).toFixed(1)}%`);
} catch (error) {
console.error('压缩失败:', error);
}
},
});
自定义压缩参数
const result = await compressImage(filePath, {
quality: 0.8, // 压缩质量 80%
maxWidth: 1200, // 最大宽度 1200px
maxHeight: 800, // 最大高度 800px
format: 'jpg', // 输出格式
: (progress) => {
// 显示压缩进度
console.log(`压缩进度: ${progress}%`);
},
});
质量预设
预设值 |
对应质量 |
适用场景 |
'low' |
0.6 |
缩略图、头像等对质量要求不高的场景 |
'medium' |
0.8 |
一般图片展示,平衡质量和大小 |
'high' |
0.9 |
高质量图片,轻度压缩 |
平台差异
功能 |
H5 |
App |
小程序 |
基础压缩 |
✅ |
✅ |
✅ |
格式转换 |
✅ |
❌ |
❌ |
进度回调 |
✅ |
✅ |
✅ |
自定义质量 |
✅ |
✅ |
✅ |
注意事项
- 文件路径: 确保传入的图片路径有效且可访问
- 内存管理: 处理大图片时注意内存使用,建议分批处理
- 格式支持: 不同平台对图片格式的支持可能有差异
- 权限要求: 某些平台可能需要文件访问权限