更新记录
1.0.0(2026-10-09)
首个版本。
- 矩形裁剪(
cropwithshape: 'rect'),区域越界自动钳制 - 圆形裁剪(
cropCircle),Android / Harmony 支持真圆,iOS 输出中心正方形并 warn - 圆角裁剪(
cropRound),半径支持 fixed 像素 / percent 比例 / scale 短边倍数三种模式 - 中心正方形裁剪(
cropSquare),三端行为一致 - 九宫格切片(
slice9),聊天场景 - 平台能力查询:
isRoundedSupported()/supportedShapes(),供业务按平台走分支 - 三端原生实现:
- Android ——
Bitmap.createBitmap+Canvas.clipPath+Path.addRoundRect - Harmony ——
readPixelsSync取 RGBA 逐像素算 alpha +createPixelMap重建 - iOS ——
CIImage.cropped零重采样裁剪(圆角受类型库限制,见 readme)
- Android ——
平台兼容性
uni-app(3.99)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | × | × | √ | √ | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | - | √ | × |
其他
| 多语言 | 暗黑模式 | 宽屏模式 | 蒸汽模式 |
|---|---|---|---|
| √ | √ | √ | × |
czg-imgcrop 图片裁剪圆角
图片裁剪、圆形与圆角处理、九宫格切片。Android 与 Harmony 支持真圆角裁剪。
平台能力(重要)
| 能力 | Android | Harmony | iOS |
|---|---|---|---|
| 矩形裁剪 | √ | √ | √ |
| 取中心正方形 | √ | √ | √ |
| 真圆角 | √ | √ | × |
| 真圆形 | √ | √ | × |
| 九宫格切片 | √ | √ | √ |
iOS 端做不出圆角,原因是 HBuilderX4.76 的 iOS 类型库有两个硬缺口:
UIImage.drawInRect未暴露,只剩drawAsPattern(平铺填充,无法定位绘制)UIGraphicsImageRenderer.image(actions)的闭包签名是()=>any,不接受参数,拿不到CGContext,因此无法clip圆角路径;而 CoreImage 没有减法混合滤镜,也表达不出圆角遮罩
iOS 端调用 cropCircle / cropRound 时插件会输出有效图片(不会给你坏图),并打console.warn 说明。但那不是圆角图。
用这个 API 判断该怎么走:
import { isRoundedSupported, supportedShapes } from '@/uni_modules/czg-imgcrop/index.js'
if (isRoundedSupported()) {
cropRound('/path/photo.jpg', 20, '/path/out.png') // 真圆角
} else {
// iOS:交给 CSS
// <image style="border-radius: 20rpx" />
}
平台支持
| 平台 | 可用 |
|---|---|
| Android / Harmony / iOS | √ |
| Web / 小程序 | — (裁剪需原生,建议用 CSS 或服务端) |
API
crop(path, options)
统一裁剪入口。
import { crop } from '@/uni_modules/czg-imgcrop/index.js'
// 矩形裁剪
const r1 = crop('/path/photo.jpg', {
x: 100, y: 200, width: 500, height: 500,
outPath: '/path/cropped.jpg',
format: 'jpg', quality: 90
})
// { path: '/path/cropped.jpg', size: 45678, width: 500, height: 500, format: 'jpg' }
// 圆形(默认输出 png 保留透明)
const r2 = crop('/path/photo.jpg', { shape: 'circle' })
// 圆角
const r3 = crop('/path/photo.jpg', {
shape: 'round', radius: 20, format: 'png'
})
// 圆角按比例(需给 width/height 供换算)
const r4 = crop('/path/photo.jpg', {
shape: 'round', radius: 0.15, radiusMode: 'percent',
width: 800, height: 600
})
options
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
x / y |
number | 0 | 裁剪区域左上角 |
width / height |
number | — | 区域宽高,shape=rect 必填 |
shape |
string | 'rect' |
rect / circle / round |
radius |
number | — | shape=round 必填 |
radiusMode |
string | 'fixed' |
fixed 像素 / percent 比例(0~0.5) / scale 短边倍数 |
format |
string | 'png' |
输出格式 |
quality |
number | 90 | 1~100 |
outPath |
string | 自动 | 输出路径 |
radiusMode 为 percent / scale 时需要同时给 width / height(插件靠它取短边换算像素半径)。
区域超出图片范围时会自动钳制到图片边界,不报错。
cropCircle(path, outPath)
取中心正方形 + 挖圆(Android / Harmony)。
cropRound(path, radius, outPath)
圆角裁剪,半径单位像素。
cropSquare(path, outPath)
取中心正方形,不做形状处理(三端一致)。
slice9(path, dir, format)
九宫格切片,聊天场景用。
const r = slice9('/path/big.png', '/path/slices', 'png')
// { dir: '/path/slices', count: 9, width: 300, height: 300, format: 'png' }
// 生成 1.png ~ 9.png,按行优先编号
输出目录不存在会自动创建。
错误处理
抛出的 Error 带 error.code:
| 错误码 | 常量 | 含义 |
|---|---|---|
| 40001 | EMPTY_PATH |
路径为空 |
| 40002 | BAD_OPTION |
参数非法(形状、格式、半径模式) |
| 40003 | FILE_NOT_FOUND |
文件不存在 |
| 40005 | REGION_INVALID |
裁剪区域宽高非正 |
| 50001 | UNSUPPORTED |
非 App 端调用同步接口 |
| 50002 | CROP_FAIL |
原生裁剪失败(常见于图片过小做九宫格) |
隐私
全部处理在本机完成,不联网、不采集、不上传任何图片。
价格
| 授权类型 | 价格 |
|---|---|
| 普通授权(regular) | ¥19.90 |
| 源码授权(sourcecode) | ¥99.00 |
普通授权版由 DCloud 对 uts 源码加密保护,运行时经云端解密编译;源码授权版提供完整 uts 源码,可自行修改与扩展,同样享受后续版本升级。
隐私说明
本插件全部图片处理在本机完成,不联网、不采集、不上传任何图片或数据。插件不主动读取相册与存储目录,输入完全由调用方通过参数传入。隐私声明详见 package.json 的 dcloudext.declaration。
更新日志
开源协议
MIT

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 2
赞赏 0
下载 12663374
赞赏 1955
赞赏
京公网安备:11010802035340号