Skip to content

组件 API

VuePictureCropper 组件是为 Cropper.js 提供了一层 Vue 适配的薄封装,它支持 Cropper.js 的所有 API 。

当前文档只记录组件扩展的属性和方法,如果需要更多高级功能,可以通过 cropper 实例使用 Cropper.js API

用法示例

组件简单,但选项复杂,建议直接查看 示例 系列及其源代码注释查看用法。

Props

组件的 Props 类型除了适用于组件本身,同时也是 useCropper 组合式函数的入参类型。

选项作用
boxStyle定义裁剪区域的样式,也就是包裹 Cropper 的父级元素样式
img用于裁剪的图片地址
optionsCropper.js API
eventsCropper.js API
presetMode预设模式 的说明

TIP

远程图片会涉及到 跨域问题,需要服务端进行配合调整,请尽量使用本地图片避免遇到问题。

  • 类型声明
ts
import type { CSSProperties } from 'vue'

export interface VuePictureCropperProps {
  /**
   * 待裁剪图片的地址
   */
  img: string

  /**
   * 裁剪框容器的样式
   */
  boxStyle?: CSSProperties

  /**
   * Cropper.js 的选项,详见 Cropper.js 文档
   */
  options?: CropperInstance.Options

  /**
   * 预设模式,见 [预设模式](./preset-mode.md)
   */
  presetMode?: PresetModeOptions
}

常用方法

组件在 Cropper.js 的基础上扩展了几个常用方法,可通过 cropper 实例调取插件的各种 API 。

  • 类型声明
ts
export interface CropperInstance extends Cropper {
  /**
   * 获取裁剪后的 Base64 结果
   *
   * 可用于本地预览展示
   */
  getDataURL: (options?: CropperInstance.GetCroppedCanvasOptions) => string

  /**
   * 获取裁剪后的 Blob 结果
   *
   * 可用于传给服务端
   */
  getBlob: (
    options?: CropperInstance.GetCroppedCanvasOptions,
  ) => Promise<Blob | null>

  /**
   * 获取裁剪后的 File 结果
   *
   * 可用于传给服务端
   *
   * @since 0.2.0
   */
  getFile: (
    options?: CropperInstance.GetCroppedCanvasOptions,
  ) => Promise<File | null>
}

注意事项

三者均属于插件自带的方法,生成的文件格式都是基于源图片的格式,仅支持处理本地图片,不支持远程图片。

另外基于 Cropper.js 还有两个常用方法,可以通过实例操作:

  • 清除裁剪框 clear()
  • 重置裁剪框 reset()
  • 入参选项

组件扩展的三个方法均可传入入参选项,用于控制获取到的结果变化。

属性类型说明默认值
widthnumber设置裁剪结果的宽度原图所截区域的大小
heightnumber设置裁剪结果的高度原图所截区域的大小
minWidthnumber设置裁剪结果的最小宽度0
minHeightnumber设置裁剪结果的最小高度0
maxWidthnumber设置裁剪结果的最大宽度Infinity
maxHeightnumber设置裁剪结果的最大高度Infinity
fillColorstring设置裁剪结果的背景色,比如想改变 png 透明区域的颜色transparent
imageSmoothingEnabledboolean是否让裁剪后的图片显得平滑true
imageSmoothingQualitystring图片平滑质量,可选 low / medium / highlow
fileNamestring文件名,目前只有 getFile 会用到该参数,可不传cropped-${当前时间戳}.${原文件扩展名}

若需转换格式或处理远程图片,请使用 Cropper.js 的 getCroppedCanvas

Released under the MIT License.