更新记录
1.0.0(2026-11-05) 下载此版本
1.0.0
- 首个版本:compress(质量阶梯逼近目标体积)、batchCompress(并发池+进度)、watermark(九宫格布局纯函数)、convertFormat、thumbnail
- 压缩结果比原图大时如实回退原图(kept:'original'),绝不交出更差的产物
平台兼容性
pk-image 图片套件
图片压缩、批量并发、目标体积逼近、文字水印九宫格、格式转换、缩略图。压缩无效自动回退原图,绝不交出更差的产物。
5 分钟接入
import imgkit from '@/uni_modules/pk-image/js_sdk/index.js';
// 基础压缩(质量 80,长边限 1080)
const r = await imgkit.compress({ src: tempFilePath, quality: 80, maxSide: 1080 });
// → { ok, path, bytes, originalBytes, ratio: 35, kept:'compressed', human:{before:'3.2MB', after:'1.1MB'} }
// 目标体积逼近:自动质量阶梯迭代到 ≤200KB
await imgkit.compress({ src, targetKB: 200, maxSide: 1600 });
// 批量并发(并发 3,进度回调)
await imgkit.batchCompress(paths, {
concurrency: 3,
onProgress: (done, total, r) => console.log(`${done}/${total}`, r.ratio + '%')
});
// 缩略图(语义糖:maxSide 200 / quality 70 / targetKB 50)
await imgkit.thumbnail({ src });
// 文字水印(九宫格布局,canvas 合成)
const wm = await imgkit.watermark({ src, text: '@我的水印', position: 'bottom-right' });
// 返回 layout.draw(ctx) 供页面 canvas 执行(见 demo 页)
API 全表
| 方法 | 签名 | 说明 |
|---|---|---|
supported |
supported() |
能力探测 { compress, canvas, env },各端差异如实上报 |
getInfo |
getInfo(src) |
图片信息 { width, height, size, format, orientation };format 含魔数嗅探兜底 |
compress |
compress(args) |
压缩。args:{ src, quality(1-100)=80, maxSide, targetKB, type:'jpg'\|'png' } |
batchCompress |
batchCompress(list, { concurrency?, onProgress?(done,total,r), args? }) |
并发池批量压缩,结果按原下标归位 |
watermark |
watermark(args) |
文字水印布局与绘制指令。args:{ src, text, position, color, fontSize, marginPct } |
convertFormat |
convertFormat({ src, type, quality? }) |
格式转换(canvas 通道,H5 最完整) |
thumbnail |
thumbnail(args) |
缩略图语义糖 |
humanSize |
humanSize(bytes) |
可读大小('2.0KB') |
compress 返回
| 字段 | 说明 |
|---|---|
| path | 压缩后路径;压缩无效时回退原图路径(kept:'original' 如实标注) |
| bytes / originalBytes / ratio | 产物大小 / 原大小 / 压缩率 % |
| width / height | 产物尺寸(contain 缩放,绝不放大) |
| quality | 实际使用的质量值(targetKB 阶梯迭代后的) |
| human | { before, after } 可读大小 |
watermark 返回
layout: { anchor:{x,y}, fontSize, color, draw(ctx) }——在页面 canvas 上下文里执行 layout.draw(ctx) 即完成绘制(demo 页有完整示例)。
压缩策略(core.js 纯函数,可单测)
fitSize:contain 等比缩放,只缩不放nextQuality:目标体积未达 → 质量 −15 重试(下限 40,≤3 轮);远低于目标 → +10 回升compareResult:产物 ≥ 原图 → 回退原图
错误码
| 码 | 含义 |
|---|---|
| E-IM-01 | 宽高非法 |
| E-IM-02 | batchCompress 入参非数组 |
| E-IM-03 | src 必填 |
| E-IM-04 | quality/maxSide 取值非法 |
| E-IM-05 | 水印缺 text |
| E-IM-10 | 读取图片失败(错误码可用于排查) |
FAQ
Q: 压缩后画质很差?
默认 quality 80 + 只缩不放;要控体积用 targetKB 让阶梯自动找平衡点,避免一次打到低质量。
Q: 小程序上 compressedWidth 不生效? 部分端版本差异,SDK 会回退 canvas 重采样;demo 页标注了各端实测矩阵。
Q: 大图会 OOM 吗? App/小程序走原生 compressImage 不占 JS 内存;canvas 通道先降采样再绘制。

收藏人数:
下载插件并导入HBuilderX
下载插件ZIP
赞赏(0)
下载 4
赞赏 0
下载 12747329
赞赏 1959
赞赏
京公网安备:11010802035340号