Element UI结合vue-cropper打造图片裁剪上传组件

default: 2

},

//图片存储在oss上的上级目录名

imgType: {

type: String,

default: ‘’

},

// 图片地址

imageUrl: {

type: String,

default: ‘’

}

},

data() {

return {

loading: false,

isStopRun: false

}

},

methods: {

//从本地选择文件

handleChange(info) {

if (this.isStopRun) {

return

}

this.loading = true

const { options } = this

console.log(info)

this.getBase64(info.file, imageUrl => {

const target = Object.assign({}, options, {

img: imageUrl

})

this.$refs.CropperModal.edit(target)

})

},

// 上传之前 格式与大小校验

beforeUpload(file) {

this.isStopRun = false

var fileType = file.type

if (fileType.indexOf(‘image’) < 0) {

this.$message.warning(‘请上传图片’)

this.isStopRun = true

return false

}

const isJpgOrPng =

file.type === ‘image/jpeg’ ||

file.type === ‘image/png’ ||

file.type === ‘image/jpg’

if (!isJpgOrPng) {

this.$message.error(‘你上传图片格式不正确!’)

this.isStopRun = true

}

const isLtSize = file.size < this.imgSize * 1024 * 1024

if (!isLtSize) {

this.$message.error(‘图片大小不能超过’ + this.imgSize + ‘MB!’)

this.isStopRun = true

}

return isJpgOrPng && isLtSize

},

//获取服务器返回的地址

handleCropperSuccess(data) {

//将返回的数据回显

this.loading = false

this.$emit(‘crop-upload-success’, data)

},

// 取消上传

handleCropperClose() {

this.loading = false

this.$emit(‘crop-upload-close’)

},

getBase64(img, callback) {

const reader = new FileReader()

reader.addEventListener(‘load’, () => callback(reader.result))

reader.readAsDataURL(img)

}

}

}

  • 模态框 CropperModal.vue

<el-dialog :visible.sync=“visible” :title=“options.title” :close-on-click-modal=“false” width=“800” @close=“cancelHandel”>

<vue-cropper ref=“cropper” :img=“options.img” :info=“true” :autoCrop=“options.autoCrop” :autoCropWidth=“options.autoCropWidth” :autoCropHeight=“options.autoCropHeight” :fixedBox=“options.fixedBox” @realTime=“realTime”>

<el-button size=“mini” @click=“cancelHandel”>取消

<el-button size=“mini” type=“primary” :loading=“confirmLoading” @click=“okHandel”>保存

  • ajax网络接口 index.js

import request from ‘@/utils/request’

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。**

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-hLr0U4iE-1714852654201)]

[外链图片转存中…(img-DDaPct1U-1714852654202)]

[外链图片转存中…(img-bvFwA0TX-1714852654202)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 27
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Vue图片裁剪,可以使用vue-cropper组件。以下是一个简单的实现过程: 1. 首先,在Vue项目中安装vue-cropper组件。可以使用npm或yarn来安装,命令如下: ``` npm install vue-cropper ``` 2. 在需要使用图片裁剪组件中,引入vue-cropper组件。可以在组件的template中添加以下代码: ```html <template> <div> <vue-cropper ref="cropper" :src="imageSrc" :guides="true" :view-mode="1" :auto-crop-area="0.8" ></vue-cropper> <button @click="cropImage">裁剪并上</button> </div> </template> ``` 3. 在组件的script部分,添加必要的代码。首先,引入vue-cropper组件: ```javascript import VueCropper from 'vue-cropper' ``` 然后,在components中注册vue-cropper组件: ```javascript components: { VueCropper }, ``` 接下来,定义data中的imageSrc属性,用于展示需要裁剪图片: ```javascript data() { return { imageSrc: '图片路径' } }, ``` 4. 实现裁剪并上功能。在methods中,定义cropImage方法: ```javascript methods: { cropImage() { const cropper = this.$refs.cropper const imageData = cropper.getCroppedCanvas().toDataURL('image/jpeg') // 将imageData发送到后端进行上处理 // ... } }, ``` 在cropImage方法中,通过this.$refs.cropper获取vue-cropper组件实例,并使用getCroppedCanvas方法获取裁剪后的图片数据。最后,将图片数据发送到后端进行上处理。 这样,就实现了Vue图片裁剪的功能。你可以根据具体的需求,自定义vue-cropper组件的属性和方法,来实现更多的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值