当使用Cropper.js在Vue中实现图像裁剪时,需要执行以下步骤:
步骤 1: 安装 Cropper.js 和样式文件
首先,使用npm或yarn命令安装Cropper.js和其对应的样式文件:
npm install cropperjs
yarn add cropperjs
然后,在项目的入口文件中引入Cropper.js和样式文件:
import Cropper from 'cropperjs';
import 'cropperjs/dist/cropper.css';
步骤 2: 设置 Vue 组件
在Vue组件中,您需要导入所需的Vue函数和Cropper.js:
import { onMounted, reactive, ref } from 'vue';
import Cropper from 'cropperjs';
import 'cropperjs/dist/cropper.css';
接下来,您可以设置Vue组件的数据和方法:
<script setup>
const img = ref(null); // 图片引用
const res = ref(null); // 裁剪结果引用
const config = reactive({
autoCrop: true, // 自动创建裁剪框
viewMode: 2, // 设置裁剪框可移动和缩放的范围
const cropper = ref(null); // Cropper.js 实例引用
onMounted(() => {
cropper.value = new Cropper(img.value, config); // 创建 Cropper.js 实例
const crop = () => {
// 获取裁剪结果(返回裁剪后的图像数据)
const croppedData = cropper.value.getCroppedCanvas().toDataURL('image/jpeg');
// 将裁剪结果显示在另一个元素中
res.value.src = croppedData;
</script>
在模板中,使用ref
指令将引用绑定到相应的DOM元素:
<template>
<img ref="img" id="img" src="https://p1.ssl.qhimg.com/t019228fc2ed5df1aa8.jpg">
</div>
<button @click="crop">裁剪</button>
<img ref="res" id="res">
</div>
</template>
最后,通过样式设置图像的宽度和高度:
<style scoped>
img {
width: 800px;
height: 500px;
</style>
全部代码如下:
<script setup>
import Cropper from 'cropperjs';
import 'cropperjs/dist/cropper.css'
import {onMounted, reactive, ref} from 'vue'
const img = ref(null)
const res = ref(null)
const cropper = ref(null)
const config = reactive({
autoCrop: true, // 自动创建裁剪框
viewMode: 2, // 设置裁剪框可移动和缩放的范围
onMounted(() => {
cropper.value = new Cropper(img.value, config);
const crop = () => {
// 获取裁剪结果(返回裁剪后的图像数据)
var croppedData = cropper.value.getCroppedCanvas().toDataURL('image/jpeg');
// 将裁剪结果显示在另一个元素中
res.value.src = croppedData;
</script>
<template>
<img ref="img" id="img" src="https://p1.ssl.qhimg.com/t019228fc2ed5df1aa8.jpg">
<button @click="crop()"> 裁剪 </button>
<img ref="res" id="res">
</template>
<style scoped>
img {
width: 800px;
height: 500px;
</style>