Skip to content

H5预览

APP下载

Cropper 图片裁剪

图片裁剪组件,支持自定义裁剪框大小、形状,并提供图片旋转、缩放等功能。可用于头像裁剪、图片编辑等场景。

基础参数

参数说明类型可选值默认值
pt样式穿透配置PassThrough--
cropWidth裁剪宽度number-300
cropHeight裁剪高度number-300
maxScale图片最大缩放倍数number-3
resizable是否可以自定义裁剪框大小boolean-false

方法

方法名说明参数返回值|
open打开裁剪url: string
close关闭裁剪
chooseImage选择图片后打开裁剪
toPng生成图片Promise<string>

事件

事件名称说明回调参数
crop确认裁剪后url: string
load图片加载后event: UniImageLoadEvent

PassThrough

样式穿透配置对象,用于深度自定义组件内部元素的样式。

参数说明类型
className组件根元素样式string
image图片元素配置PassThroughProps
op操作栏元素配置PassThroughProps
opItem操作项按钮元素配置PassThroughProps
mask遮罩层元素配置PassThroughProps
cropBox裁剪框元素配置PassThroughProps

示例

  • 定义类型必须为 ClCropperComponentPublicInstance | null

  • 调用方法必须为 !.

vue
<template>
  <cl-button @tap="chooseImage">{{ t("选择图片") }}</cl-button>
  <cl-cropper ref="cropperRef" @crop="onCrop" @load="onImageLoad"></cl-cropper>
</template>

<script lang="ts" setup>
const cropperRef = ref<ClCropperComponentPublicInstance | null>(null);

function chooseImage() {
  // 方法一,调用 open 方法打开
  uni.chooseImage({
    count: 1,
    sizeType: ["original", "compressed"],
    sourceType: ["album", "camera"],
    success: (res) => {
      if (res.tempFilePaths.length > 0) {
        cropperRef.value!.open(res.tempFilePaths[0]);
      }
    },
  });

  // 方法二,调用选择图片方法打开裁剪
  cropperRef.value!.chooseImage();
}

function onCrop(url: string) {
  uni.previewImage({
    urls: [url],
  });
}

function onImageLoad(e: UniImageLoadEvent) {
  console.log("onImageLoad", e);
}
</script>