vue表单上传图片数据(vue-cropper插件实现图片截取上传组件封装)
类别:编程学习 浏览量:353
时间:2022-03-28 01:04:27 vue表单上传图片数据
vue-cropper插件实现图片截取上传组件封装基于vue-cropper插件实现图片截取上传组件封装的具体代码,供大家参考,具体内容如下
需求场景:
后台开发需要上传图片并进行相应比例尺寸图片的截取,本组件开发采用Ant Design Vue组件库搭配vue-cropper插件进行封装
实现如下
html
<template> <li> <a-upload name="avatar" list-type="picture-card" class="avatar-uploader" :show-upload-list="false" :custom-request="customRequest" :before-upload="beforeUpload" :style="`width: ${width}; height: ${height};`" > <img v-if="imageUrl && !loading" :src="imageUrl" alt="avatar" :style="`width: ${width}; height: ${height};`" /> <li v-else> <a-icon :type="loading ? 'loading' : 'plus'" /> <li class="ant-upload-text">上传图片</li> </li> </a-upload> <a-modal v-model="imageCut.isShowModal" title="图片截取" width="400px" @ok="finish" @cancel="imageCut.close" > <li class="cropper-content" v-if="imageCut.isShowModal"> <li class="cropper" style="text-align:center"> <vueCropper ref="cropper" :img="imageCut.imgFile" :outputSize="outputSize" :outputType="outputType" :info="info" :full="full" :canMove="canMove" :canMoveBox="canMoveBox" :original="original" :autoCrop="autoCrop" :fixed="fixed" :fixedNumber="fixedNumber" :centerBox="centerBox" :infoTrue="infoTrue" :fixedBox="fixedBox" ></vueCropper> </li> </li> </a-modal> </li> </template>
js
<script> import { uploadImage } from '@/api/common' import { VueCropper } from "vue-cropper"; export default { name: 'ImageUpload', components: { VueCropper }, data() { return { loading: false, imageCut: { isShowModal: false, imgFile: '', init: imgFile => { this.imageCut.imgFile = imgFile this.imageCut.isShowModal = true }, close: () => { this.imageCut.imgFile = '' this.imageCut.isShowModal = false } } } }, props: { imageUrl: String, width: { type: String, default: '100px' }, height: { type: String, default: '100px' }, canCut: { type: Boolean, default: false }, info: { type: Boolean, default: false }, // 裁剪框的大小信息 outputSize: { type: Number, default: 0.8 }, // 裁剪生成图片的质量 outputType: { type: String, default: .jpg" alt="vue表单上传图片数据(vue-cropper插件实现图片截取上传组件封装)" border="0" />
css
<style lang="less"> .avatar-uploader > .ant-upload { width: 100%; height: 100%; } .ant-upload-select-picture-card i { font-size: 32px; color: #999; } .ant-upload-select-picture-card .ant-upload-text { margin-top: 8px; color: #666; } .cropper-content { .cropper { width: auto; height: 400px; } } </style>
组件使用及说明
<image-upload :imageUrl="form.diagramUrl" @uploadSuccess="uploadSuccess" width="160px" height="90px" :can-edit="canCut" :fixed-number="[16,9]" />
组件调用时需传入canEdit属性,指定组件是否启动图片选取后的裁剪功能,默认值为不启用裁剪;需裁剪时可传入fixedNumber属性,定义裁剪框的宽高比
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
您可能感兴趣
- vuex数据持续化(Vuex数据持久化实现的思路与代码)
- vue.js开发网站的关键技术(Vue.js项目前端多语言方案的思路与实践)
- vue 选中背景高亮(vue 如何设置背景颜色及透明度)
- vue自定义组件定义事件(基于Vue实现自定义组件的方式引入图标)
- vue可以使用模态框modal吗(vue基于Teleport实现Modal组件)
- vue移动端返回在指定位置(vue移动端判断手指在屏幕滑动方向)
- vue接收网络请求数据类型配置(vue中对接Graphql接口的实现示例)
- vue左右滑动切换(vue实现界面滑动效果)
- vue重置密码(Vue 两个字段联合校验之修改密码功能的实现)
- vue慢动作怎么操作(vue开发之moment的介绍与使用)
- vue前端搜索功能如何实现(使用Vue3+Vant组件实现App搜索历史记录功能示例代码)
- vue数据改变页面不刷新(vue列表数据删除后主动刷新页面及刷新方法详解)
- vue组件开发步骤(解析如何自动化生成vue组件文档)
- vue怎么定义router的动态路由(vue.js Router中嵌套路由的实用示例)
- vue多个对象实现双向数据绑定(利用js实现Vue2.0中数据的双向绑定功能)
- vue左右滑屏(vue中实现全屏以及对退出全屏的监听)
- 怎么快速学好英语(怎么快速学好英语初中)
- 中国留学生都是富二代吗()
- 我们现在吃的苹果是哪里来的 原来现代苹果引入中国仅有一百多年(我们现在吃的苹果是哪里来的)
- 买绿宝不能只挑黄绿色 菜农教你3招挑,个个皮薄肉脆,香甜爆汁(买绿宝不能只挑黄绿色)
- 大果肉搭配薄瓜皮, 绿宝 脆甜爽口,不愧是甜瓜中的 佼佼者(大果肉搭配薄瓜皮)
- 河南尉氏县因地制宜发展果蔬种植 水坡镇绿宝甜瓜变 金瓜(河南尉氏县因地制宜发展果蔬种植)
热门推荐
- dedecms栏目怎么调用友情链(DedeCms用SQL语句调用数据库任意内容方法)
- dedecmsv6如何安装(dedecms 下载地址加迅雷专用链的操作方法 比较全)
- html5表单实例(使用HTML5和CSS3表单验证功能)
- mysql数据库基本使用方法(详解MySQL 数据库范式)
- javascript的执行顺序
- docker-compose启动单个容器(docker-compose快速搭建docker私有仓库的步骤)
- python元组操作方法(Python元组常见操作示例)
- 织梦dedecms专题页制作详细教程(织梦Dedecms系统SEO优化之网站URL目录优化)
- laravel怎么设置自定义(laravel实现于语言包的完美切换方法)
- web服务器与应用服务器的区别(web服务器是什么?web服务器有哪些呢?)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9