超优雅 Vue 图片裁剪组件Vue-Cropper

Vue
679
0
0
2022-04-02
标签   Vue组件

这次给小伙伴们分享2个vue.js任意图片缩放裁剪组件VueCropper。

超优雅 Vue 图片裁剪组件Vue-Cropper

1、vue-cropper

一款优雅的vue图片裁剪组件,Star高达 2.4k+。内置各种丰富自定义参数及方法配置。

超优雅 Vue 图片裁剪组件Vue-Cropper

安装

$ npm i vue-cropper -S

引入方式

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

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

超优雅 Vue 图片裁剪组件Vue-Cropper

使用插件

<template> 
  <div class="cropper-wrap"> 
    <vueCropper 
      ref="cropper" 
      :img="option.img" 
      :outputSize="option.size" 
      :outputType="option.outputType" 
      :info="true" 
      :full="option.full" 
      :canMove="option.canMove" 
      :canMoveBox="option.canMoveBox" 
      :original="option.original" 
      :autoCrop="option.autoCrop" 
      :fixed="option.fixed" 
      :fixedNumber="option.fixedNumber" 
      :centerBox="option.centerBox" 
      :infoTrue="option.infoTrue" 
      :fixedBox="option.fixedBox"@realTime="realTime"
    > 
    </vueCropper> 
  </div>
</template>

<script>
export default {
  data() {
    return {
      // 裁剪组件的基础配置option 
      option: {
        img: '/assets/preview.jpg', // 裁剪图片的地址 
        info: true, // 裁剪框的大小信息 
        outputSize: 0.8, // 裁剪生成图片的质量 
        outputType: 'jpeg', // 裁剪生成图片的格式 
        canScale: true, // 图片是否允许滚轮缩放 
        autoCrop: true, // 是否默认生成截图框 
        fixedBox: true, // 固定截图框大小 不允许改变 
        fixed: true, // 是否开启截图框宽高固定比例 
        fixedNumber: [7, 5], // 截图框的宽高比例 
        full: true, // 是否输出原图比例的截图 
        canMoveBox: true, // 截图框能否拖动 
        original: false, // 上传图片按照原始比例渲染 
        centerBox: false, // 截图框是否被限制在图片里面 
        infoTrue: true // true 为展示真实输出图片宽高 false 展示看到的截图框宽高
      },
    }
  },
  methods: {
    // 开始截图 
    startCrop() {
      this.$refs.cropper.startCrop()
    },
    // 停止截图 
    stopCrop() {
      this.$refs.cropper.stopCrop()
    },
    // 清除截图 
    clearCrop() {
      this.$refs.cropper.clearCrop()
    },
    // 修改图片大小 
    changeScale(num) {
      num = num || 1this.$refs.cropper.changeScale(num)
    },
    // 实时预览函数 
    realTime(data) {
      console.log(data)
    },
    // 下载图片 
    down(type) {
      var aLink = document.createElement('a')
      aLink.download = 'demo'// 输出if (type === 'blob') { 
        this.$refs.cropper.getCropBlob((data) => {
          this.downImg = window.URL.createObjectURL(data)
          aLink.href = window.URL.createObjectURL(data)
          aLink.click()
        })
      } else {
        this.$refs.cropper.getCropData((data) => {
          this.downImg = data
          aLink.href = data
          aLink.click()
        })
      }
    },
  }
}
</script>

配置参数

超优雅 Vue 图片裁剪组件Vue-Cropper

演示示例及仓库地址

# 演示地址
http://github.xyxiao.cn/vue-cropper/example/

# 仓库地址
https://github.com/xyxiao001/vue-cropper

超优雅 Vue 图片裁剪组件Vue-Cropper

2、vue-cropperjs

一款轻量级的多功能图片裁切组件。支持图片拖动、缩放、旋转、翻转及获取裁剪数据等操作。

超优雅 Vue 图片裁剪组件Vue-Cropper

安装

npm install --save vue-cropperjs

引入方式

# 全局main.js引入
import Vue from 'vue';
import VueCropper from 'vue-cropperjs';
import 'cropperjs/dist/cropper.css';
Vue.component(VueCropper);

# 组件内引入
import VueCropper from 'vue-cropperjs';
import 'cropperjs/dist/cropper.css';
export default {
  components: { VueCropper}
}

使用组件

<template><div class="img-cropper"><vue-cropperref="cropper":aspect-ratio="16 / 9":src="imgSrc"preview=".preview":movable="true":scalable="true":zoomable="true"
    />
	<div class="preview"></div></div>
</template>

<script>
import VueCropper from 'vue-cropperjs';
import 'cropperjs/dist/cropper.css';

export default {
  components: {
    VueCropper,
  },
  data() {
    return {
      imgSrc: '/assets/images/berserk.jpg',
      cropImg: '',
    };
  },
  methods: {
    cropImage() {
      this.cropImg = this.$refs.cropper.getCroppedCanvas().toDataURL();
    },
    move(offsetX, offsetY) {
      this.$refs.cropper.move(offsetX, offsetY);
    },
    reset() {
      this.$refs.cropper.reset();
    },
    rotate(deg) {
      this.$refs.cropper.rotate(deg);
    },
    zoom(percent) {
      this.$refs.cropper.relativeZoom(percent);
    },
  },
};
</script>

最后附上链接地址

# 演示地址
https://agontuk.github.io/vue-cropperjs/

# 仓库地址
https://github.com/Agontuk/vue-cropperjs

ok,这次就分享到这里。喜欢的朋友可以去试下哈,欢迎一起留言讨论。