更新记录
1.0.2(2026-11-03)
- 修复 iOS 选完图立刻导出:裁剪页刚出现时,确认按钮先不接收点击
1.0.1(2026-11-03)
- 声明支持 uni-app x 的 Android 与 iOS
1.0.0(2026-11-03)
- 原生头像裁剪压缩
- 圆形、方形、圆角,输出尺寸、质量和文件大小可改
- 取景
shape和导出output分开。默认圆形取景、方形出图 - 默认英文,支持中文
平台兼容性
uni-app(4.27)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-vue插件版本 | app-nvue | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | √ | 1.0.2 | × | 5.0 | 1.0.2 | 13 | 1.0.2 | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
uni-app x(4.27)
| Chrome | Safari | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|---|---|
| × | × | 5.0 | 1.0.2 | 13 | 1.0.2 | × | × |
其他
| 多语言 | 暗黑模式 | 宽屏模式 | 蒸汽模式 |
|---|---|---|---|
| √ | × | × | × |
fz-avatar-crop
1.0.2
仅 App(Android / iOS)。打开原生页裁剪头像,并按质量和文件大小压缩。图片只在本机处理,不上传、不写系统相册。
取景和导出是两个参数。界面可以是圆形,保存出来的文件仍可以是方形。
不传 locale 时界面是英文。中文传 zh 或 zh-CN。strings 只改要换的词。
拷到 uni_modules 后打自定义基座。改 .kt / .swift / .uts 要重打。只改调用方的 js / vue 不用重打。
环境
| 项 | 要求 |
|---|---|
| HBuilderX | 4.27 及以上 |
| 工程 | uni-app、uni-app x 的 App。不支持 H5、小程序、鸿蒙 |
| Android | minSdk 21 |
| iOS | 13.0 及以上 |
插件不申请权限,也不带隐私用途说明。宿主自己选图时,在 manifest.json 里开 Gallery 模块。
用法
import { cropAvatar } from '@/uni_modules/fz-avatar-crop'
const res = await cropAvatar({
imagePath: filePath,
size: 512,
quality: 85,
maxBytes: 200 * 1024,
shape: 'circle',
output: 'square',
locale: 'zh',
themeColor: '#2F6FED',
strings: { title: '设置头像' }
})
// res.path _doc/fz-avatar-crop/avatar-*.jpg
// res.format jpeg | png
// res.width res.height 实际边长
// res.bytes 文件字节数
取消是 94304,按取消处理,不要当成失败。H5 和小程序调用是 94308。
try {
const res = await cropAvatar({ imagePath })
} catch (e) {
if (e.errCode === 94304) return
console.log(e.errCode, e.errMsg)
}
常见场景
圆形取景、方形文件。头像控件自己画成圆。这是默认行为。
await cropAvatar({
imagePath,
shape: 'circle',
output: 'square'
})
圆形取景,导出也是圆,圆外透明。文件是 PNG。
await cropAvatar({
imagePath,
shape: 'circle',
output: 'circle',
mask: true
})
方形取景,圆角文件,圆角外铺白底,仍是 JPEG。
await cropAvatar({
imagePath,
shape: 'square',
output: 'round',
corner: 0.22,
fillColor: '#FFFFFF'
})
可配置项
只传要改的字段。没传的保持默认。
| 字段 | 默认 | 说明 |
|---|---|---|
imagePath |
必填 | 本地图。绝对路径、file://、content://、_doc、_www |
size |
512 |
导出正方形边长,像素。64–2048。超出会夹到这个区间 |
quality |
85 |
JPEG 质量,1–100。PNG 忽略 |
maxBytes |
0 |
文件上限,字节。<= 0 不限制。超出后先把质量降到 40,再缩小边长,最小 64 |
shape |
circle |
取景框。circle 圆、square 方、round 圆角。只影响界面 |
output |
square |
导出形状。square 方、circle 圆、round 圆角。和 shape 无关 |
corner |
0.2 |
shape 或 output 为 round 时,圆角占边长的比例,0–0.5 |
mask |
false |
只在 output 不是 square 时生效。true 时形状外透明 |
format |
jpeg |
jpeg 或 png。jpg 会当成 jpeg。见下方规则 |
fillColor |
#FFFFFF |
底色。方形 JPEG 的底,以及圆形 JPEG 形状外的填充 |
maxEdge |
2048 |
导入时长边上限。小于 size 时抬到 size。最大 8192 |
locale |
英文 | 空或 en 为英文。zh、zh-CN、zh-Hans 为中文。其它值按英文 |
themeColor |
#48A16B |
完成按钮 |
maskColor |
#B3000000 |
取景框外的遮罩。#RRGGBB 或 #AARRGGBB |
canvasColor |
#111111 |
页面底色。浅色时状态栏图标改为深色 |
ringColor |
#FFFFFF |
取景框描边 |
rotate |
true |
底部旋转。每次 90 度 |
grid |
true |
取景框内的三等分线 |
format 没传时:
| output | mask | 结果 |
|---|---|---|
square |
任意 | jpeg,完整正方形 |
circle / round |
false |
jpeg,形状外用 fillColor |
circle / round |
true |
png,形状外透明 |
显式传了 format 就按传入的来。JPEG 不能带透明,圆形 JPEG 的形状外是 fillColor。
操作:单指拖动,双指缩放,双击还原。缩放范围是盖住取景框的 1–8 倍。导入时会按 EXIF 把照片转正。
style
没传的项保持内置值。
| 字段 | 默认 | 范围 | 说明 |
|---|---|---|---|
inkColor |
#FFFFFF |
颜色 | 标题、取消 |
mutedColor |
#C8CDD4 |
颜色 | 提示、旋转标签 |
panelColor |
透明 | 颜色 | 顶栏和底栏。#00000000 为透明 |
ringWidth |
2 |
1–12 | 描边粗细,单位 dp |
icons
本地图片路径。按原图显示,不染色。没传的键继续用内置符号。
| 键 | 位置 |
|---|---|
close |
左上角。传入后不再显示「取消」文字 |
rotate |
底部旋转按钮里的图标。下面的文字仍用 strings.rotate |
icons: { close: '/static/close.png' }
文案
strings 只传要改的键,其余仍按 locale。
| 键 | English | 中文 |
|---|---|---|
title |
Crop avatar | 裁剪头像 |
cancel |
Cancel | 取消 |
confirm |
Done | 完成 |
rotate |
Rotate | 旋转 |
hint |
Drag and pinch to frame it. Double-tap to reset. | 拖动、双指缩放。双击还原。 |
opening |
Opening... | 正在打开 |
openFail |
Could not open image | 无法打开图片 |
saveFail |
Save failed | 保存失败 |
返回值
| 字段 | 说明 |
|---|---|
path |
本地路径。优先 _doc/fz-avatar-crop/avatar-时间戳.jpg 或 .png,可直接给 image 和上传 |
format |
jpeg 或 png |
width |
实际边长。被 maxBytes 缩小后会小于 size |
height |
同 width |
bytes |
文件字节数 |
同目录只保留最近 8 张。iOS 必须写在 _doc,缓存绝对路径上传读不到。Android 在 _doc 建不出来时,退回缓存绝对路径。
错误码
errSubject 为 fz-avatar-crop。
| 码 | 含义 |
|---|---|
| 94301 | 路径无效 |
| 94302 | 读写或编码失败 |
| 94303 | 无法解码 |
| 94304 | 用户取消 |
| 94305 | 没有前台页面 |
| 94306 | 裁剪页已经打开 |
| 94308 | 不是 App |
隐私
无广告,无统计。不申请相册、相机、存储权限。不读取通讯录,不上传图片。选图、上传由宿主自己做。

收藏人数:
购买普通授权版(
试用
赞赏(0)
下载 24
赞赏 0
下载 12739099
赞赏 1959
赞赏
京公网安备:11010802035340号