使用 vue-cropper
进行图片裁剪并上传裁剪后的图片是一个常见的需求。以下是一个完整的示例,展示如何在 Vue.js 项目中使用 vue-cropper
进行图片裁剪并上传裁剪后的图片。
vue-cropper
首先,你需要安装 vue-cropper
。你可以使用 npm 或 yarn 进行安装:
npm install vue-cropper --save
# 或者
yarn add vue-cropper
vue-cropper
在你的 Vue 组件中引入 vue-cropper
并进行配置。
<template>
<div>
<input type="file" @change="onFileChange" />
<vue-cropper
ref="cropper"
:src="imageUrl"
:aspect-ratio="1"
:auto-crop="true"
:view-mode="1"
:background="true"
:guides="true"
:crop-box-resizable="true"
:crop-box-movable="true"
:drag-mode="'move'"
style="width: 100%; height: 400px;"
/>
<button @click="cropImage">Crop and Upload</button>
</div>
</template>
<script>
import VueCropper from 'vue-cropper';
export default {
components: {
VueCropper,
},
data() {
return {
imageUrl: null,
};
},
methods: {
onFileChange(e) {
const file = e.target.files[0];
if (file) {
const reader = new FileReader();
reader.onload = (event) => {
this.imageUrl = event.target.result;
};
reader.readAsDataURL(file);
}
},
cropImage() {
this.$refs.cropper.getCroppedCanvas().toBlob((blob) => {
const formData = new FormData();
formData.append('file', blob, 'cropped-image.png');
// 发送 POST 请求上传图片
fetch('YOUR_UPLOAD_URL', {
method: 'POST',
body: formData,
})
.then((response) => response.json())
.then((data) => {
console.log('Upload success:', data);
})
.catch((error) => {
console.error('Upload error:', error);
});
});
},
},
};
</script>
<style>
/* 你可以根据需要添加样式 */
</style>
<input type="file" @change="onFileChange" />
选择图片文件,并在 onFileChange
方法中读取文件内容并设置为 imageUrl
。vue-cropper
组件进行图片裁剪。imageUrl
作为 src
属性传递给 vue-cropper
。cropImage
方法中,通过 this.$refs.cropper.getCroppedCanvas().toBlob
获取裁剪后的图片 Blob 对象,并使用 FormData
将其封装为表单数据。然后,通过 fetch
发送 POST 请求将裁剪后的图片上传到服务器。YOUR_UPLOAD_URL
替换为你的实际上传 URL。vue-cropper
组件的样式和配置。领取专属 10元无门槛券
手把手带您无忧上云