0.0.9 • Published 5 months ago

image-cropper-next v0.0.9

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

ImageCropper 图片裁剪

image-cropper是一个基于vue3 typescript开发的图片裁剪组件,展示区域,裁剪大小可自由控制。

安装

# via npm
npm i image-cropper-next

# via yarn
yarn add image-cropper-next

# via pnpm
pnpm add image-cropper-next

# via Bun
bun add image-cropper-next

使用,全局导入(main.ts/main.js)

import { createApp } from 'vue'
import ImageCropper from 'image-cropper-next'
const app = createApp(App)
app.use(ImageCropper)

使用,用的地方导入

默认方式,弹窗模式,不穿入任何参数

点击按钮后会打开弹窗,需要在内部选择图片,然后进行裁剪

<template>
  <image-cropper @confirm="confirm"></image-cropper>
  <img style="width: 200px;" :src="imgUrl" :alt="imgUrl">
</template>
<script setup>
import { ImageCropper } from 'image-cropper-next'
const imgUrl = ref('')
const imageCropperRef = ref()
const confirm = (data) => {
  imgUrl.value = data.dataURL
}
</script>

远端图片裁剪,弹窗模式,不穿入任何参数

自定义配置,通过ref触发open方法,需要传入图片地址,不传入则需要在内部选择图片进行裁剪 远端图片需要配置cross-origin为true,cross-origin-header为"anonymous"

<template>
  <button @click="imageCropperRef.open(image)">打开裁剪框</button>
  <image-cropper ref="imageCropperRef" :cross-origin="true" cross-origin-header="anonymous" @confirm="confirm">
    <template #open></template>
  </image-cropper>
  <img style="width: 200px;" :src="imgUrl" :alt="imgUrl">
</template>
<script setup>
import { ImageCropper } from 'image-cropper-next'
const imgUrl = ref('')

const image = new Image()
image.name = 'test'
image.src = 'https://node.wisdoms.xin/static/img/20230627/zb0XVS9bimage.png'

const imageCropperRef = ref()
const confirm = (data) => {
  imgUrl.value = data.dataURL
}
</script>

直接在页面中显示模式

可通过onPrintImg方法实时获取裁剪后的图片信息

<template>
  <image-cropper :isModal="false" @confirm="confirm" @onPrintImg="onPrintImg">
    <template #open></template>
  </image-cropper>
  <img style="width: 200px;" :src="imgUrl" :alt="imgUrl">
</template>

<script lang="ts" setup>
import { ImageCropper } from 'image-cropper-next'
import { ref } from 'vue';

const imgUrl = ref('')
const confirm = (data: any) => {
  console.log(data);
  imgUrl.value = data.dataURL
}
const onPrintImg = (data: any) => {
  console.log(data);
  imgUrl.value = data.dataURL
}
</script>

API

AvatarCropper Props

工具栏和底部操作栏均可以设置为不展示,通过ref进行自定义配置,也可通过slots进行自定义配置。

属性名描述类型默认值是否必需
cross-origin是否设置图片跨域Booleanfalse
cross-origin-header是否设置图片跨域String'*'
label按钮文字String'选择图片'
is-modal是否已弹窗形式展示Booleantrue
lock-scroll是否在弹窗出现时锁定bodyBooleantrue
show-choose-btn是否显示选择图片按钮Booleantrue
box-width裁剪窗口高度Number800
box-height裁剪窗口高度Number400
cut-width默认裁剪宽度Number200
cut-height默认裁剪高度Number200
rate按比例裁剪,例(2:1)Stringnull
tool是否显示工具栏Booleantrue
tool-bg工具栏背景色String'#fff'
img-move能否拖动图片Booleantrue
size-change能否调整裁剪尺寸Booleantrue
original-graph是否为原图裁剪Booleanfalse
move-able能否调整裁剪区域位置Booleantrue
preview-mode裁剪过程中是否返回裁剪结果 裁剪原图卡顿时将此项设置为falseBooleantrue
watermark-text水印文字String''
watermark-text-font水印文字样式String'12px Sans-serif'
watermark-text-color水印文字颜色String'#fff'
watermark-text-x水印横向位置Number0.95
watermark-text-y水印纵向位置Number0.95
small-to-upload选择的图片宽高均小于裁剪宽高度时候直接上传原图Booleanfalse
save-cut-position是否保存上一次裁剪位置Booleanfalse
scale-able是否允许缩放图片Booleantrue
file-type文件类型String'png'
tool-box-overflow是否允许裁剪框超出图片Booleantrue
quality裁剪后的图片质量Number1
is-finish-close是否在裁剪完成后关闭弹窗Booleantrue
footer是否显示底部操作栏Booleantrue

AvatarCropper Slots

名称描述
open弹窗模式,初始状态下显示的内容,设置后label文字按钮将不再显示(showChooseBtn为true时生效)
title自定义title内容
ratio控制该(Ratio: )内容
scale控制该(Scale: )内容
rotateLeft控制该(↳)内容
rotateRight控制该(↲)内容
resetRotate控制该(↻)内容
flipHorizontal控制该(⇆)内容
flipVertically控制该(⇅)内容
choose左下角显示的选择文件按钮(showChooseBtn为true时生效)
cancel取消按钮(清除画布/关闭弹窗)
confirm确认按钮(确认裁剪)
footer底部操作栏

AvatarCropper Events

名称描述回调参数
confirm点击确认后触发(dataFile: DataFile)
realTime实现渲染触发,每次更改裁剪内容都会触发(dataFile: DataFile)
error错误时触发错误信息
clearAll清除所有内容-

AvatarCropper Ref

事件名说明参数
close取消-
open打开裁剪框image图片,必须要有src属性(new Image())
chooseImage选择图片-
flipDirection反向翻转,默认值:horizontal,可选值:vertically(direction: FlipDirection)
resetScale重置缩放-
resetRotate重置旋转-
rotate旋转角度(angle: number)
cropImage裁剪图片, doNotReset:是否实时返回截取结果, callback: 返回对象回调(doNotReset: boolean, callback: (dataFile: DataFile) => void)

样式变量

组件提供了下列 CSS 变量,可用于自定义样式。

名称默认值描述
--image-cropper-primary-color#409eff主题颜色
--image-cropper-primary-color-hover#66b1ff主题颜色hover
--image-cropper-primary-color-light#c6e2ff主题颜色次色
--image-cropper-warning-color#e6a23cwarning色调
--image-cropper-warning-color-hover#ebb563warning色调hover
0.0.9

5 months ago

0.0.8

6 months ago

0.0.7

7 months ago

0.0.6

7 months ago

0.0.5

7 months ago

0.0.4

7 months ago

0.0.3

7 months ago

0.0.2

7 months ago

0.0.1

7 months ago