vue-cropper 截图

安装:

npm install vue-cropper --save-dev

用法:

<template>
  <div id="cropper">
    <VueCropper
      ref="cropper"
      :img="url"
      :info="option.info"
      :outputSize="option.outputSize"
      :outputType="option.outputType"
      :canMove="option.canMove"
      :autoCrop="option.autoCrop"
      :autoCropWidth="option.autoCropWidth"
      :autoCropHeight="option.autoCropHeight"
      :fixedBox="option.fixedBox"
      :original="option.original"
      :infoTrue="option.infoTrue"
      :centerBox="option.centerBox"
      :canMoveBox="option.canMoveBox"
      :canScale="option.canScale"
      :fixed="option.fixed"
      :fixedNumber="option.fixedNumber"
    ></VueCropper>
    <el-button type="primary" @click="startCrop">开始截图</el-button>
    <el-button type="primary" @click="getData">获取截图数据</el-button>
  </div>
</template>

<script>
import { VueCropper } from "vue-cropper";
export default {
  components: { VueCropper },
  data() {
    return {
      option: {
        outputSize: 1, // 裁剪生成图片的质量 0.1 - 1
        outputType: "jpg", //	裁剪生成图片的格式 jpeg || png || webp
        canScale: true, // 图片是否允许滚轮缩放 默认true
        autoCrop: false, // 是否默认生成截图框 默认false
        canMove: true, //上传图片是否可以移动 默认true
        // autoCropWidth: 0, //默认生成截图框宽度	容器的80%	0~max
        // autoCropHeight: 0, //默认生成截图框高度	容器的80%	0~max
        fixedBox: false, // 固定截图框大小 不允许改变	false	true | false
        original: false, // 上传图片按照原始比例渲染	false	true | false
        infoTrue: true, // 为展示真实输出图片宽高 false 展示看到的截图框宽高	false	true | false
        centerBox: true, // 截图框是否被限制在图片里面	false	true | false
        canMoveBox: true, //截图框能否拖动	true	true | false
        fixed: false 是否开启截图框宽高固定比例
        // fixedNumber: [750, 256] // 截图框的宽高比例 [宽度, 高度]
      },
      url: require("./../assets/m.jpg"),
      cropperSrc: "",
      param: {
        // 上传参数
        originalFilename: "",
        contentType: "image/jpeg",
        base64: "" // 我们接口要求不要data:image/png;base64,
      },
      flag: true,
      percentage: 0 // 上传进度
    };
  },
  methods: {
    getData() {
      this.$refs.cropper.getCropData(data => {
        console.log(data.replace("data:image/png;base64,", ""));
      });
    },
    startCrop() {
      this.$refs.cropper.startCrop();
    }
  }
};
</script>
<style scoped lang="less">
#cropper {
  margin: 0 auto;
  height: 300px;
  width: 300px;
}
</style>

用法:

this.$refs.cropper.startCrop() 开始截图
this.$refs.cropper.stopCrop() 停止截图
this.$refs.cropper.clearCrop() 清除截图
this.$refs.cropper.changeScale() 修改图片大小 正数为变大 负数变小
this.$refs.cropper.getImgAxis() 获取图片基于容器的坐标点
this.$refs.cropper.getCropAxis() 获取截图框基于容器的坐标点
this.$refs.cropper.goAutoCrop 自动生成截图框函数
this.$refs.cropper.rotateRight() 向右边旋转90度
this.$refs.cropper.rotateLeft() 向左边旋转90度

获取截图数据
// 获取截图的base64 数据
this.$refs.cropper.getCropData((data) => {
  // do something
  console.log(data)  
})
 
// 获取截图的blob数据
this.$refs.cropper.getCropBlob((data) => {
  // do something
  console.log(data)  
})

参数配置:

        outputSize: 1, // 裁剪生成图片的质量 0.1 - 1
        outputType: "jpg", //	裁剪生成图片的格式 jpeg || png || webp
        canScale: true, // 图片是否允许滚轮缩放 默认true
        autoCrop: false, // 是否默认生成截图框 默认false
        canMove: true, //上传图片是否可以移动 默认true
        // autoCropWidth: 0, //默认生成截图框宽度	容器的80%	0~max
        // autoCropHeight: 0, //默认生成截图框高度	容器的80%	0~max
        fixedBox: false, // 固定截图框大小 不允许改变	false	true | false
        original: false, // 上传图片按照原始比例渲染	false	true | false
        infoTrue: true, // 为展示真实输出图片宽高 false 展示看到的截图框宽高	false	true | false
        centerBox: true, // 截图框是否被限制在图片里面	false	true | false
        canMoveBox: true, //截图框能否拖动	true	true | false
        fixed: false 是否开启截图框宽高固定比例
        // fixedNumber: [750, 256] // 截图框的宽高比例 [宽度, 高度]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

景尘

你的励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值