首页 > 其他分享 >vueCropper使用教程

vueCropper使用教程

时间:2023-11-13 13:46:21浏览次数:35  
标签:教程 false 截图 Boolean vueCropper 使用 cropper true 图片

vueCropper使用教程

1、使用步骤

1.1、安装 vue-cropper

npm install vue-cropper

main.js里面使用
import VueCropper from 'vue-cropper'
Vue.use(VueCropper)

组件内使用
import { VueCropper } from 'vue-cropper'
components: {
	VueCropper
}

1.2、基本使用方法

<!--外层容器包裹并设置宽高-->
<div style="width:100%;height:500px">
  <vue-cropper autoCrop img="https://shnhz.github.io/shn-ui/img/Koala.jpg" ref="cropper" centerBox :fixedNumber="[2,1]"/>
</div>
<shn-button @click="getCropData()" block ref="cropper" style="margin:10px 0" type="primary">获取截图后的图片</shn-button>
export default {
  methods:{
    getCropData() {
      this.$refs.cropper.getCropData(data => {
        console.log(data)
      })
    }
  }
}

2、API说明

2.1、属性

参数 说明 类型 可选值 默认值
img 裁剪图片的地址 String url 地址 / base64 / blob
outputSize 裁剪生成图片的质量 Number 0.1 - 1 1
outputType 裁剪生成图片的格式 String jpeg / png / webp jpeg
info 裁剪框的大小信息 Boolean true / false true
canScale 图片是否允许滚轮缩放 Boolean true / false true
autoCrop 是否默认生成截图框 Boolean true / false false
autoCropWidth 默认生成截图框宽度 String 80%
autoCropHeight 默认生成截图框高度 String 80%
fixed 是否开启截图框宽高固定比例 Boolean true / false true
fixedNumber 截图框的宽高比例 Array [宽度, 高度] [1, 1]
full 是否输出原图比例的截图 Boolean true / false true
fixedBox 固定截图框大小 不允许改变 Boolean true / false true
canMove 上传图片是否可以移动 Boolean true / false true
canMoveBox 截图框能否拖动 Boolean true / false true
original 上传图片按照原始比例渲染 Boolean true / false false
centerBox 截图框是否被限制在图片里面 Boolean true / false false
high 是否按照设备的dpr 输出等比例图片 Boolean true / false true
infoTrue true 为展示真实输出图片宽高 false 展示看到的截图框宽高 Boolean true / false false
maxImgSize 限制图片最大宽度和高度 Number 2000
enlarge 图片根据截图框输出比例倍数 String 1
mode 图片默认渲染方式 String contain / cover / 100px / 100% / auto contain

2.2、事件

参数 说明 类型 可选值 默认值
@imgMoving 图片移动事件
@cropMoving 截图框移动事件

2.3、方法

参数 说明 类型 可选值 默认值
startCrop 开始截图
stopCrop 停止截图
clearCrop 清除截图
changeScale 修改图片大小 正数为变大 负数变小
getImgAxis 获取图片基于容器的坐标点
getCropAxis 获取截图框基于容器的坐标点
goAutoCrop 自动生成截图框函数
rotateRight 向右边旋转90度
rotateLeft 向左边旋转90度
getCropData 获取截取后的图片内容

3、完整代码展示

<template>
  <div>
    <el-button class="primary" @click="dialogVisible = true">图片截取</el-button>
    <div class="home" style="width:100%;height:500px">
    <el-dialog
        title="截取文件"
        :visible.sync="dialogVisible"
        width="30%"
       >
		
        <div class="cropper" >
            <vueCropper
                ref="cropper"
                :img="option.img"
                :outputSize="option.outputSize"
                :outputType="option.outputType"
                :canScale='option.canScale'
                :autoCrop='option.autoCrop'
                :autoCropWidth='option.autoCropWidth'
                :autoCropHeight='option.autoCropHeight'
                :canMoveBox='option.canMoveBox'
                :canMove='option.canMove'
                :centerBox='option.centerBox'
                :info='option.info'
                :fixedBox='option.fixedBox'
                @realTime='realTime'
            ></vueCropper>
        </div>
       <el-upload class="upload-demo"
       :auto-upload="false"
       :on-change="getImgUrl"
       :show-file-list="false"
       list-type="picture"
     >
        <el-button size="small" type="primary">点击上传</el-button>
        </el-upload>
        <img :src='previewImg'  alt="" class='previewImg' ref="img" style="display:block">
        <el-button type='primary' @click='handleClick'>确定</el-button>
   </el-dialog>
    <img :src="resImg" alt="" v-if="resImg" class='previewImg'>
  </div>
  </div>
</template>
<script>
import { VueCropper } from 'vue-cropper'
export default {
  data () {
    return {
      dialogVisible:false,
      option: {
        img: require('../assets/images/swiper1.png'), // 裁剪图片地址
        outputSize: 1, // 裁剪生成图片质量
        outputType: 'jepg', // 裁剪生成图片格式
        canScale: true, // 图片是否允许滚轮播放
        autoCrop: true, // 是否默认生成截图框 false
        info: true, // 是否展示截图框信息
        autoCropWidth: 300, // 生成截图框的宽度
        autoCropHeight: 200, // 生成截图框的高度
        canMoveBox: true, // 截图框是否可以拖动
        fixedBox: false, // 固定截图框的大小
        canMove: false, // 上传图片是否可拖动
        centerBox: true, // 截图框限制在图片里面
      },
      resImg: null, //截图后图片
      previewImg: null, // 预览后的图片
      lists:[]
    }
  },
  components: {
    VueCropper
  },

  methods: {
    //点击获取图片路径
    getImgUrl(file){
        console.log(file)
        
        this.option.img = file.url;
    },
    handleClick () {
        //获取截图后的数据
      this.$refs.cropper.getCropData(data => {
        this.resImg = data
        //关闭模态框
       this.dialogVisible = false;
      })
    },
   
    realTime (data) {
      const that = this
      this.$refs.cropper.getCropBlob(data => {
        // 这里data数据为Blob类型,blobToDataURI方法转换成base64
        this.blobToDataURI(data, function(res) {
          that.previewImg = res
        })
      })
    }, 
    blobToDataURI(blob, callback) {
       var reader = new FileReader();
       reader.readAsDataURL(blob);
       reader.onload = function (e) {
          callback(e.target.result);
       }
    },
   
  },

}
</script>
<style scoped>


.reviewImg{
    width: 200Px;
    height: 200Px;
    object-fit: cover;
    border-radius: 50%;
  }
    .cropper{
    width: 500px;
    height: 500px;
    border: 1px solid orange;
  }

</style>


标签:教程,false,截图,Boolean,vueCropper,使用,cropper,true,图片
From: https://www.cnblogs.com/coderkdf/p/17828911.html

相关文章

  • macOS系统IntelliJ IDEA安装 新手详细教程(全网最详细)
    1.安装地址:https://www.jetbrains.com/idea/download/?section=mac#section=windows 2.下载完成后,点击打开安装包,将安装包拖入Applications. 双击打开idea.同意协议.  3.进入后学生账号登录可以免费使用.或者淘宝购买激活码(有风险).支持正版! ......
  • USB(2.0 / Type-C) to MPSSE(JTAG / SPI / IIC) / UART / FIFO: FTDI 的FT4232H配成SP
    Ti60Demo板FT4232H串口使用易灵思FPGA技术交流2022-04-1508:43Ti60F225demo板使用的是FT4232H,有4个通道A,B,C和D。其中A通道用于SPI接口,可以是AS也可以是PS。通道B用于JTAG,通道C连接了UART,通道D连接了FX3。A,B,C和D四个通道分别对应Zadig中的TitraniumTi60F225develo......
  • 无涯教程-Dart - Typedef
    typedef或function-typealise(函数类型别名)有助于定义指向内存中可执行代码的指针。简而言之,typedef可用作引用函数的指针。以下是在Dart程序中实现typedefs的步骤。第1步  - 定义typedeftypedef可用于指定我们希望特定函数匹配的函数,函数由函数的参数(包括......
  • .net6.0及以上WPF中使用GDI+的demo
    usingSystem;usingSystem.Drawing;usingSystem.Runtime.InteropServices;usingSystem.Windows;usingSystem.Windows.Interop;usingSystem.Windows.Media.Imaging;namespaceTryDemo{///<summary>///InteractionlogicforMainWindow.xaml......
  • 微服务系列-使用WebFlux的WebClient进行Spring Boot 微服务通信示例
    公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享。概述在之前的教程中,我们看到了使用RestTemplate的SpringBoot微服务通信示例。从5.0开始,RestTemplate处于维护模式,很快就会被弃用。因此Spring团队建议使用org.springframework.web.reac......
  • Delphi TNetHTTPClient使用递归方式取所有分页数据
    DelphiTNetHTTPClient使用递归方式取所有分页数据   业务系统提供的一个查询数据接口,可以通过分页方式取得数据,如果一次性取得所有数据,将页大小增大即可,但如果数据太多怕会造成内存溢出。   综合考虑每次只取一个分页,分页数据不要太大,用递归方式来获取是比较合理的解......
  • 无涯教程-Dart - 调试(Debug)
    开发人员时不时地在编码时犯错误,程序中的错误称为错误,查找和修复错误的过程称为调试,并且是开发过程中的正常部分,本节介绍可帮助您完成调试任务的工具和技术。添加断点考虑以下代码片段。(TestString.dart)voidmain(){inta=10,b=20,c=5;c=c*c*c;p......
  • 如何使用React/JSX在样式加载完成之前等待React的加载?
    在React中,可以使用加载状态来等待样式加载完成之后再渲染React组件。以下是一种常见的方法:创建一个加载状态isLoading并将其初始化为true。在componentDidMount生命周期方法中使用setTimeout函数来模拟样式加载的延迟。在延迟结束后,将isLoading状态设置为false。在渲染方法中,使用条......
  • 使用br工具备份到local的一些操作
    作者:hellogitee背景最近业务有一个需求,为防止机房级别的故障,想要在异地机房新搭建一套TiDB集群做备用,以便能随时进行机房级别的切换。这种需求当然是要用TiCDC来同步啦,第一要步就是通过br工具进行备份,然后再来同步。官方文档&FAQ备份存储的选择官方文档建议使用S3或者NFS,如果......
  • 使用 Chrome 开发者工具获取网站的 LCP 数据
    LargestContentfulPaint(LCP)是一个重要的、用户感知性能的测量指标,它报告了在页面加载过程中,视口内最大可见元素呈现的时间。理想的LCP时间小于2.5秒。那么,我们如何使用Chrome浏览器来度量一个网站的LCP呢?下面是一个详细的步骤说明。首先,你需要打开你想要测试的网站。......