iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >vue-cropper插件如何实现图片截取上传组件封装
  • 734
分享到

vue-cropper插件如何实现图片截取上传组件封装

2023-06-15 06:06:14 734人浏览 独家记忆
摘要

小编给大家分享一下Vue-cropper插件如何实现图片截取上传组件封装,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!需求场景:后台开发需要上传图片并进行相应比例尺寸图片的截取,本组件开发采用Ant Design Vue组

小编给大家分享一下Vue-cropper插件如何实现图片截取上传组件封装,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

需求场景:

后台开发需要上传图片并进行相应比例尺寸图片的截取,本组件开发采用Ant Design Vue组件库搭配vue-cropper插件进行封装

实现如下

vue-cropper插件如何实现图片截取上传组件封装

vue-cropper插件如何实现图片截取上传组件封装

html

<template>  <div>    <a-upload      name="avatar"      list-type="picture-card"      class="avatar-uploader"      :show-upload-list="false"      :custom-request="customRequest"      :before-upload="beforeUpload"      :    >      <img        v-if="imageUrl && !loading"        :src="imageUrl"        alt="avatar"        :      />      <div v-else>        <a-icon :type="loading ? 'loading' : 'plus'" />        <div class="ant-upload-text">上传图片</div>      </div>    </a-upload>    <a-modal      v-model="imageCut.isshowModal"      title="图片截取"      width="400px"      @ok="finish"      @cancel="imageCut.close"    >      <div class="cropper-content" v-if="imageCut.isShowModal">        <div class="cropper" >          <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>        </div>      </div>    </a-modal>  </div></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: 'jpeg'    }, // 裁剪生成图片的格式    canScale: {      type: Boolean,      default: true    }, // 图片是否允许滚轮缩放    autoCrop: {      type: Boolean,      default: true    }, // 是否默认生成截图框    // autoCropWidth: 300, // 默认生成截图框宽度    // autoCropHeight: 200, // 默认生成截图框高度    fixedBox: {      type: Boolean,      default: false    }, // 固定截图框大小 不允许改变    fixed: {      type: Boolean,      default: true    }, // 是否开启截图框宽高固定比例    fixedNumber: {      type: Array,      default: () => [1, 1]    }, // 截图框的宽高比例    full: {      type: Boolean,      default: true    }, // 是否输出原图比例的截图    canMove: {      type: Boolean,      default: false    },    canMoveBox: {      type: Boolean,      default: true    }, // 截图框能否拖动    original: {      type: Boolean,      default: false    }, // 上传图片按照原始比例渲染    centerBox: {      type: Boolean,      default: true    }, // 截图框是否被限制在图片里面    infoTrue: {      type: Boolean,      default: true    } // true 为展示真实输出图片宽高 false 展示看到的截图框宽高  },  methods: {    beforeUpload(file) {      const isJpGorPng = file.type === 'image/jpeg' || file.type === 'image/png'      if (!isJpgOrPng) {        this.$message.error('请上传JPG或PNG文件!')      }      const isLt2M = file.size / 1024 / 1024 < 2      if (!isLt2M) {        this.$message.error('请上传2MB以下文件!')      }      return isJpgOrPng && isLt2M    },    customRequest(file) {      if (this.canCut) {        this.readFile(file.file)      } else {        this.loading = true        const fORMData = new FormData()        formData.append('fileIdcard', file.file)        uploadImage(formData).then(res => {          this.loading = false          this.$emit('uploadSuccess', res.ossUrl)        })      }    },    readFile(file) {      var reader = new FileReader()      reader.readAsDataURL(file)      reader.onload = () => {        this.imageCut.init(reader.result)      }    },    finish() {      this.$refs.cropper.getCropBlob(data => {        this.loading = true        // 上传阿里云服务器        const formData = new FormData()        formData.append('fileIdcard', data)        uploadImage(formData).then(res => {          this.imageCut.close()          this.loading = false          this.$emit('uploadSuccess', res.ossUrl)        })      })    }  }}</script>

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属性,定义裁剪框的宽高比

看完了这篇文章,相信你对“vue-cropper插件如何实现图片截取上传组件封装”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: vue-cropper插件如何实现图片截取上传组件封装

本文链接: https://www.lsjlt.com/news/278339.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue-cropper插件实现图片截取上传组件封装
    基于vue-cropper插件实现图片截取上传组件封装的具体代码,供大家参考,具体内容如下 需求场景: 后台开发需要上传图片并进行相应比例尺寸图片的截取,本组件开发采用Ant Des...
    99+
    2022-11-12
  • vue-cropper插件如何实现图片截取上传组件封装
    小编给大家分享一下vue-cropper插件如何实现图片截取上传组件封装,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!需求场景:后台开发需要上传图片并进行相应比例尺寸图片的截取,本组件开发采用Ant Design Vue组...
    99+
    2023-06-15
  • vue-cropper组件实现图片切割上传
    本文实例为大家分享了vue-cropper组件实现图片切割上传的具体代码,供大家参考,具体内容如下 这几日,等来了些空闲,用vue和spring boot实践一次头像上传,因此记下...
    99+
    2022-11-12
  • vue-cropper组件如何实现图片切割上传
    小编给大家分享一下vue-cropper组件如何实现图片切割上传,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!vue-cropper在vue中的引入1、组件内引入...
    99+
    2023-06-15
  • vue封装组件之上传图片组件
    本文实例为大家分享了vue上传图片组件的封装具体代码,供大家参考,具体内容如下 未上传状态 上传状态 其他状态(查看/删除) 自定义组件文件名称 - 这里叫UploadImg....
    99+
    2022-11-12
  • Vue实现封装一个切片上传组件
    目录组件效果使用文档封装过程1. 文件切片2. 构造切片请求参数3. 控制分片请求的并发完整代码待完善组件效果 单文件切片上传 多文件切片上传 组件使用案例 <templa...
    99+
    2023-03-19
    Vue封装切片上传组件 Vue切片上传组件 Vue切片上传
  • Vue如何实现封装一个切片上传组件
    今天小编给大家分享一下Vue如何实现封装一个切片上传组件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。组件效果单文件切片上传...
    99+
    2023-07-05
  • vue-upload-component如何封装一个图片上传组件
    这篇文章主要介绍了vue-upload-component如何封装一个图片上传组件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。需求分析业务...
    99+
    2022-10-19
  • vue如何实现上传图片组件
    这篇文章给大家分享的是有关vue如何实现上传图片组件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。未上传状态上传状态其他状态(查看/删除)自定义组件文件名称 - 这里叫UploadImg.vue<templ...
    99+
    2023-06-25
  • 怎么用Vue组件封装上传图片和视频
    这篇文章主要介绍“怎么用Vue组件封装上传图片和视频”,在日常操作中,相信很多人在怎么用Vue组件封装上传图片和视频问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Vue组件封装上传图片和视频”的疑惑有所...
    99+
    2023-06-20
  • Vue中图片上传组件封装-antd的a-upload二次封装的实例
    目录图片上传组件封装-antd的a-upload二次封装api组件封装使用优化图片上传组件封装-antd的a-upload二次封装 a-upload组件 api const pub...
    99+
    2022-11-13
  • Vue组件封装上传图片和视频的示例代码
      首先下载依赖: cnpm i -S vue-uuid ali-oss 图片和视频字段都是数组类型,保证可以上传多个文件。 UploadImageVideo: &...
    99+
    2022-11-12
  • vue如何实现上传图片文件
    这篇文章给大家分享的是有关vue如何实现上传图片文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。原始input标签form表单上传<input type="file"&nbs...
    99+
    2023-06-15
  • vue如何封装图片滑块验证组件
    这篇文章主要为大家展示了“vue如何封装图片滑块验证组件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue如何封装图片滑块验证组件”这篇文章吧。具体内容如下滑块验证组件整体不难,主要在于设置图...
    99+
    2023-06-29
  • vue3.0 移动端二次封装van-uploader实现上传图片(vant组件库)
    1、前提:业务需求,最多上传6张图片,并可以实现本地预览 2、解决方法:使用vant组件库中的van-uploader实现 3、代码实现 template <div cl...
    99+
    2022-11-13
  • vue中怎么实现一个上传图片组件
    本篇文章给大家分享的是有关vue中怎么实现一个上传图片组件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.首先得有一个[type=file]...
    99+
    2022-10-19
  • vue-echarts如何实现图表组件封装详解
    目录背景:有哪些工具?怎么封装?总结背景: 需要大量使用图表的项目,为了提升开发效率,可以对图表类进行封装成组件,方便页面的搭建,也能进行统一管理维护,即使后面系统风格需要调整,调整...
    99+
    2022-11-13
  • vue如何实现上传组件
    这篇文章主要介绍vue如何实现上传组件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!思路文件上传的两种实现方式From形式<form   method="post&quo...
    99+
    2023-06-15
  • vue如何实现文件切片上传
    这篇文章主要介绍了vue如何实现文件切片上传的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue如何实现文件切片上传文章都会有所收获,下面我们一起来看看吧。在实际开发项目过程中有时候需要上传比较大的文件,然后呢...
    99+
    2023-07-05
  • Vue插件如何实现从封装到发布
    这篇文章主要介绍Vue插件如何实现从封装到发布,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!插件的分类添加全局的方法或者属性 比如:vue-element添加全局的资源 比如:指令 ...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作