更新记录
1.0.2(2026-03-11)
修改文档
1.0.1(2026-03-11)
修改文档
1.0.0(2026-03-11)
首次上传
查看更多平台兼容性
云端兼容性
| 阿里云 | 腾讯云 | 支付宝云 |
|---|---|---|
| √ | √ | √ |
云函数类插件通用教程
使用云函数类插件的前提是:使用HBuilderX 2.9+
图片压缩服务 API 文档
🚨 重要提示
请您先试用再购买!
在正式购买前,请务必点击页面上的 "导入插件并试用" 按钮进行充分测试。
本插件由开发者利用业余时间开发维护,可能存在以下情况:
- 功能兼容性:请确认插件完全满足您的项目需求
- 问题响应:Bug修复可能无法做到即时响应
- 支持限制:优先处理已确认购买的正式用户问题
强烈建议:在试用环境中全面测试后,确认功能满足需求再进行购买!
感谢您的理解与支持 🙏
兼容性说明
本云对象服务全面兼容以下平台和框架:
| 平台/框架 | 支持情况 | 特别说明 |
|---|---|---|
| UniApp | ✅ 完全兼容 | 支持所有UniApp版本 |
| UniApp-X | ✅ 完全兼容 | 支持新一代跨平台框架 |
| 微信小程序 | ✅ 完全兼容 | 支持最新版本API |
| QQ小程序 | ✅ 完全兼容 | 已通过官方测试 |
| 支付宝小程序 | ✅ 完全兼容 | 支持最新版本 |
| 百度小程序 | ✅ 完全兼容 | 已适配百度环境 |
| 字节跳动小程序 | ✅ 完全兼容 | 支持抖音/头条小程序 |
| 快应用 | ✅ 完全兼容 | 支持华为/小米等快应用 |
| H5 | ✅ 完全兼容 | 支持所有现代浏览器 |
| App | ✅ 完全兼容 | 同时支持Android和iOS |
| Vue | ✅ 完全兼容 | 支持Vue 2.x和3.x |
| NVue | ✅ 完全兼容 | 高性能原生渲染支持 |
| Web | ✅ 完全兼容 | 支持PC和移动端浏览器 |
方法列表
1. 单图压缩
方法名
compress(params)
请求参数
| 参数名 | 类型 | 必填 | 默认值 | 说明与限制 |
|---|---|---|---|---|
url |
string | 三选一 | - | 图片URL地址(需支持CORS)png / jpg |
base64 |
string | 三选一 | - | 图片Base64字符串(支持data URL格式)png / jpg |
buffer |
Buffer | 三选一 | - | 图片Buffer数据(云对象中使用) png / jpg |
width |
number | 否 | null | 目标宽度(像素),保持宽高比 |
height |
number | 否 | null | 目标高度(像素),保持宽高比 |
quality |
number | 否 | 70 | 压缩质量(1-100,值越高越清晰,png无效) |
注意:url、base64、buffer 三个参数必须且只能选择一个传入。
返回结果
{
code: Number, // 200=成功
message: String, // 结果描述
success: Boolean, // 成功标识
timestamp: Number, // 时间戳
data: {
originalSize: Number, // 原始大小(字节)
compressedSize: Number, // 压缩后大小(字节)
width: Number, // 压缩后宽度
height: Number, // 压缩后高度
quality: Number, // 压缩质量
format: String, // 图片格式(jpeg/png)
base64: String, // 压缩后的Base64数据
buffer: Buffer, // 压缩后的Buffer数据
compressionRatio: Number, // 压缩率(%)
tip: String // 提示信息
}
}
2. 批量压缩
方法名
batchCompress(params)
请求参数
| 参数名 | 类型 | 必填 | 默认值 | 说明与限制 |
|---|---|---|---|---|
images |
Array | 是 | - | 图片数组,每个元素包含压缩参数 |
images[].url |
string | 三选一 | - | 图片URL地址(需支持CORS) png / jpg |
images[].base64 |
string | 三选一 | - | 图片Base64字符串 png / jpg |
images[].buffer |
Buffer | 三选一 | - | 图片Buffer数据(云对象中使用) png / jpg |
images[].width |
number | 否 | null | 目标宽度 |
images[].height |
number | 否 | null | 目标高度 |
images[].quality |
number | 否 | 70 | 压缩质量 (png无效) |
限制:单次最多处理10张图片,超出将拒绝处理。
返回结果
{
code: Number, // 200=成功
message: String, // 结果描述
success: Boolean, // 成功标识
timestamp: Number, // 时间戳
data: {
total: Number, // 总数量
successCount: Number, // 成功数量
failCount: Number, // 失败数量
results: Array // 每张图片的处理结果
}
}
方法调用示例
示例1:通过URL压缩图片
const imageCompressor = uniCloud.importObject('image-compressor')
const res = await imageCompressor.compress({
url: 'https://example.com/image.jpg',
width: 800,
quality: 80
})
if (res.success) {
console.log('压缩成功,压缩率:', res.data.compressionRatio, '%')
console.log('压缩后base64:', res.data.base64)
}
示例2:通过Base64压缩图片
const imageCompressor = uniCloud.importObject('image-compressor')
const res = await imageCompressor.compress({
base64: 'data:image/jpeg;base64,/9j/4AAQ...',
width: 600,
height: 400,
quality: 70
})
if (res.success) {
console.log('原始大小:', res.data.originalSize, '字节')
console.log('压缩后大小:', res.data.compressedSize, '字节')
}
示例3:仅调整质量,不改变尺寸
const imageCompressor = uniCloud.importObject('image-compressor')
const res = await imageCompressor.compress({
url: 'https://example.com/image.png',
quality: 60 // 只降低质量到60%
})
if (res.success) {
console.log('质量调整完成')
}
示例4:批量压缩多张图片
const imageCompressor = uniCloud.importObject('image-compressor')
const res = await imageCompressor.batchCompress({
images: [
{ url: 'https://example.com/img1.jpg', width: 800, quality: 80 },
{ base64: 'data:image/jpeg;base64,/9j/4AAQ...', quality: 70 },
{ url: 'https://example.com/img2.png', quality: 75 }
]
})
if (res.success) {
console.log('批量处理完成')
console.log('成功:', res.data.successCount, '张')
console.log('失败:', res.data.failCount, '张')
}
关键特性说明
1. 尺寸智能处理
- 宽高比保持:指定宽度或高度时,另一边自动按比例计算
- 尺寸限制:最大支持20000像素,防止内存溢出
- 无参数模式:不指定宽高时,保持原始尺寸
处理规则:
- 仅指定
width:按比例计算height - 仅指定
height:按比例计算width
2. 图片格式支持
- 输入格式:JPEG、PNG
- 输出格式:JPEG、PNG
- 格式转换:
- JPEG输入 → JPEG输出
- PNG输入 → PNG输出
3. 质量参数说明
- 范围:1-100,整数
- 默认值:70
- 推荐值:
- Web图片:70-80
- 缩略图:60-70
- 高质量图片:85-95
- PNG格式:质量参数对PNG无效,PNG为无损格式
4. 批量处理限制
- 数量限制:单次最多10张图片
- 并发处理:所有图片同时压缩,提高效率
- 结果返回:包含每张图片的独立结果和统计信息
- 错误隔离:单张图片失败不影响其他图片处理
5. 性能优化建议
- 图片大小:建议单张图片不超过5MB
- 质量选择:根据使用场景选择合适质量值
- URL方式:确保图片服务器支持CORS
- 缓存策略:相同参数可缓存结果,减少重复计算
6. 错误处理与容错
- 下载重试:图片下载失败自动重试3次
- 边界检查:所有参数自动修正到合法范围
错误码说明
| 错误码 | 错误类型 | 说明 | 处理建议 |
|---|---|---|---|
| 200 | success | 操作成功 | - |
| 400 | params_error | 通用参数错误 | 检查请求参数格式 |
| 401 | params_error | 质量参数错误 | 质量参数必须在1-100之间 |
| 402 | params_error | 缺少图片源 | 请提供url、buffer或base64 |
| 403 | params_error | 不支持的格式 | 仅支持JPEG、PNG和WebP格式 |
| 500 | download_error | 下载失败 | 检查URL是否正确 |
| 501 | download_error | 下载超时 | 尝试较小的图片或检查网络 |
| 600 | process_error | 处理失败 | 重试或联系管理员 |
| 601 | process_error | 图片过大 | 压缩后重新上传 |
| 602 | process_error | 内存溢出 | 处理较小的图片 |
| 900 | system_error | 内部错误 | 稍后重试 |
| 901 | system_error | 超时错误 | 减少处理数量 |
| 902 | system_error | 平台兼容性 | 联系管理员 |
常见问题(FAQ)
Q:支持哪些图片格式?
A:目前支持JPEG、PNG两种格式。
Q:图片压缩超时?
A:原始图片越大所需要的压缩时间越长;请自行配置云对象的超时时间、函数执行内存等;
Q:图片太大导致处理失败怎么办?
A:建议前端先进行初步压缩,或者分多次处理。
Q:不同平台的超时限制不同如何处理?
A:服务会自动检测当前平台,建议根据平台特性调整批量处理的数量。
Q:数据太大云对象有限制?
A:云对象的接收参数的体积上限,支付宝云接收参数大小不可超过6MB,阿里云接收参数大小不可超过2MB,腾讯云接收参数大小不可超过5MB,由于传输层还有上下文环境信息,所以开发者给云对象发送参数时需注意控制参数体积。
Q:Base64格式如何传递?
A:支持纯base64字符串和data URL格式(如data:image/jpeg;base64,...)。
Q:质量参数对PNG格式有效吗?
A:PNG是无损格式,质量参数对其无效。建议需要压缩的场景使用JPEG格式。
Q:批量处理时部分图片失败会影响其他图片吗?
A:不会。批量处理时每张图片独立处理,单张失败不影响其他图片,结果中会明确标示每张图片的成功/失败状态。
Q:压缩后的图片可以直接上传到云存储吗?
A:服务返回的是Base64,需要前端自行调用uniCloud.uploadFile上传到云存储。
Q:如何判断压缩效果?
A:返回结果中包含compressionRatio字段,表示压缩率。同时可以对比originalSize和compressedSize字段。

收藏人数:
购买源码授权版(
导入插件并试用
赞赏(0)
下载 73
赞赏 0
下载 34422
赞赏 155
赞赏
京公网安备:11010802035340号