vue实现移动端图片裁剪上传功能实现移动端图片裁剪上传功能
本文实例为大家分享了vue移动端图片裁剪上传的具体代码,供大家参考,具体内容如下
1.安装cropperjs依赖库
npm install cropperjs
2.编写组件SimpleCropper.vue
<template>
<div class="v-simple-cropper">
<slot>
<button @click="upload">上传图片</button>
</slot>
<input class="file" ref="file" type="file" accept="image/*" @change="uploadChange">
<div class="v-cropper-layer" ref="layer">
<div class="layer-header">
<button class="cancel" @click="cancelHandle">取消</button>
<button class="confirm" @click="confirmHandle">裁剪</button>
</div>
<img ref="cropperImg">
</div>
</div>
</template>
<script>
import Cropper from 'cropperjs'
import 'cropperjs/dist/cropper.min.css'
export default {
name: 'v-simple-cropper',
props: {
initParam: Object,
successCallback: {
type: Function,
default: () => {}
}
},
data () {
return {
cropper: {},
filename: ''
}
},
mounted () {
this.init()
},
methods: {
// 初始化裁剪插件
init () {
let cropperImg = this.$refs['cropperImg'] this.cropper = new Cropper(cropperImg, {
aspectRatio: 1 / 1,
dragMode: 'move'
})
},
// 点击上传按钮
upload () {
this.$refs['file'].click()
},
// 选择上传文件
uploadChange (e) {
let file = e.target.files[0] this.filename = file['name'] let URL = window.URL || window.webkitURL
this.$refs['layer'].style.display = 'block'
this.cropper.replace(URL.createObjectURL(file))
},
// 取消上传
cancelHandle () {
this.cropper.reset()
this.$refs['layer'].style.display = 'none'
this.$refs['file'].value = ''