Skip to content

引入组件

局部引入

ts
const FPictureCropper = defineAsyncComponent(
  () => import('@/components/formaui/f-picture-cropper/f-picture-cropper.vue')
)

基础用法

演示入口页提供「组件默认使用」「自定义操作栏」两个入口(对齐 ThorUI picture-cropper 官方演示)。

默认使用:全屏组件 + 顶部「选择图片」「锁定裁剪/自由裁剪」+ 内置底栏。

html
<f-picture-cropper :src="imageUrl" :is-lock-ratio="isLockRatio" @crop="onCrop" />

自定义操作栏isCustom + cutTrigger 触发裁剪,rotateAngle 控制旋转。

html
<f-picture-cropper :src="imageUrl" is-custom :rotate-angle="rotateAngle" :cut-trigger="cutTrigger" @crop="onCrop" />

裁剪子页建议在 pages.json 中设置 "disableScroll": true 禁止页面回弹。

closeOnCancel属性:点击取消是否执行 navigateBack(全屏裁剪页保持默认true即可)

html
<f-picture-cropper :src="imageSrc" :close-on-cancel="false" @cancel="showCropper = false" />

裁剪框尺寸

width / height属性:裁剪框宽高(单位 px,默认280

html
<f-picture-cropper :src="imageSrc" :width="300" :height="200" />

minWidth / minHeight / maxWidth / maxHeight属性:裁剪框尺寸限制(px)

html
<f-picture-cropper :src="imageSrc" :min-width="120" :max-width="360" />

锁定与比例

isLockWidth / isLockHeight / isLockRatio属性:锁定裁剪框宽高或比例(宽高均锁定时不可拖动裁剪框)

html
<f-picture-cropper :src="imageSrc" is-lock-ratio />

图片交互

isLimitMove属性:是否限制图片移动范围(默认true

isRotateDisabled属性:是否禁用触摸旋转(默认true

minScale / maxScale属性:图片缩放范围(默认0.52

rotateAngle属性:初始旋转角度

html
<f-picture-cropper :src="imageSrc" :rotate-angle="90" :min-scale="0.8" :max-scale="3" />

输出与样式

scaleRatio属性:输出图相对裁剪框的像素比(默认2

quality属性:输出质量 (0, 1](默认0.8

isBase64属性:是否返回 base64(H5 端 url 字段亦可能为 base64)

html
<f-picture-cropper :src="imageSrc" :scale-ratio="3" :quality="0.9" />

borderColor / edgeColor / edgeWidth / edgeBorderWidth / edgeOffsets属性:裁剪框与角标样式

html
<f-picture-cropper :src="imageSrc" border-color="rgba(255,255,255,0.3)" edge-color="#5677fc" edge-width="40rpx" />

自定义操作栏

isCustom属性:隐藏底部默认操作栏(默认false

cutTrigger属性:isCustomtrue 时,值变化触发裁剪

html
<f-picture-cropper :src="imageSrc" is-custom :cut-trigger="cutTrigger" @crop="onCrop" />
<f-button @click="cutTrigger++">完成裁剪</f-button>

属性

属性名类型说明默认值
srcstring待裁剪图片地址''
widthnumber裁剪框宽度(px)280
heightnumber裁剪框高度(px)280
minWidthnumber裁剪框最小宽度(px)100
minHeightnumber裁剪框最小高度(px)100
maxWidthnumber裁剪框最大宽度(px)360
maxHeightnumber裁剪框最大高度(px)360
borderColorstring裁剪框边框颜色rgba(255,255,255,0.1)
edgeColorstring角标颜色#FFFFFF
edgeWidthstring角标宽高34rpx
edgeBorderWidthstring角标边框宽度6rpx
edgeOffsetsstring角标偏移6rpx
isLockWidthboolean锁定裁剪框宽度false
isLockHeightboolean锁定裁剪框高度false
isLockRatioboolean锁定裁剪框比例false
scaleRationumber输出图相对裁剪框比例2
qualitynumber输出质量 (0, 1]0.8
rotateAnglenumber图片旋转角度0
minScalenumber图片最小缩放比0.5
maxScalenumber图片最大缩放比2
isRotateDisabledboolean禁用触摸旋转true
isLimitMoveboolean限制图片移动范围true
isCustomboolean隐藏底部操作栏false
cutTriggernumber | booleanisCustom 时触发裁剪0
isBase64boolean是否返回 base64false
isLoadingboolean裁剪时显示 loadingtrue
rotateIconstring旋转按钮图标/static/components/cropper/img_rotate.png
closeOnCancelboolean取消时是否 navigateBacktrue

事件

事件名说明回调参数
ready组件初始化完成-
load图片加载完成-
angleInit旋转角度重置为 0°-
change裁剪区域或图片变化FPictureCropperChangeDetail
crop裁剪完成FPictureCropperCropDetail
cancel点击取消-

说明

  • 组件为全屏固定层,一般通过 v-if 控制显隐
  • 旋转图标需将 static/components/cropper/ 复制到项目 static 目录,或通过 rotateIcon / uni.$formaui.fPictureCropper 指定路径
  • 微信小程序端裁剪网络图时,组件内部会自动 downloadFile 转本地路径