更新记录

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

隐私

无广告,无统计。不申请相册、相机、存储权限。不读取通讯录,不上传图片。选图、上传由宿主自己做。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

插件不申请权限。选图由宿主自己调相册;iOS 不新增隐私用途说明。

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

图片只在本机裁剪压缩,不上传、不写入系统相册。插件无自有服务器,不发起网络请求。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无广告。无统计 SDK。