vue cropper图片剪切组件

1.配置cropper

npm install vue-cropper

2.局部引入

import { VueCropper } from "vue-cropper";

3.使用html

   

     

       

         

           

              ref="cropper"

              :img="option.img"

              :outputSize="option.size"

              :outputType="option.outputType"

              :info="option.info"

              :full="option.full"

              :canMove="option.canMove"

              :canMoveBox="option.canMoveBox"

              :original="option.original"

              :autoCrop="option.autoCrop"

              :autoCropWidth="option.autoCropWidth"

              :autoCropHeight="option.autoCropHeight"

              :fixedBox="option.fixedBox"

              @realTime="realTime"

              @imgLoad="imgLoad"

          >

         

         

           

              左旋转

              右旋转

              放大

              缩小

              上传

           

           

              取消

           

         

       

     

   


3.1js

data () {

    return {

      isShowCropper:false,

      fileImgList:[],

      option: {

        img: '', // 裁剪图片的地址

        info: true, // 裁剪框的大小信息

        outputSize: 1, // 剪切后的图片质量(0.1-1)

        full: true, // 输出原图比例截图 props名full

        outputType: 'png', // 裁剪生成额图片的格式

        canMove: true,  // 能否拖动图片

        original: false,  // 上传图片是否显示原始宽高

        canMoveBox: true,  // 能否拖动截图框

        autoCrop: true, // 是否默认生成截图框

        autoCropWidth: 200, // 默认生成截图框宽度

        autoCropHeight: 200, // 默认生成截图框高度

        fixedBox: false // 截图框固定大小

      },

    }

  },

components: { VueCropper },

beforeAvatarUploadPS(file) {

      this.option.img=URL.createObjectURL(file);

      const isDWG = file.name.split('.');

      const format = isDWG[isDWG.length - 1];

      // uploadParams.file="";

      if (format !="png" && format !="jpg") {

        this.$message.error('上传文件只能是 png或jpg 格式!');

        return false;

      }

      this.isShowCropper = true;

    },

    // 然后我加了几个剪切的按钮进行旋转或放大,并把上传方法一并粘贴到如下:

    turnLeft() {

      this.$refs.cropper.rotateLeft();

    },

    turnRight() {

      this.$refs.cropper.rotateRight();

    },

    cancleCropper() {//取消截图

      this.isShowCropper = false;

    },

    changeScale(num){

      num = num || 1;

      this.$refs.cropper.changeScale(num);

    },

    imgLoad (msg) {

      console.log('imgLoad')

      console.log(msg)

    },

    // 实时预览函数

    realTime(data) {

      console.log('realTime')

      this.previews = data

    },

    onCubeImg() {//剪切上传

      // 获取cropper的截图的base64 数据

      this.$refs.cropper.getCropData(data => {

        //先将显示图片地址清空,防止重复显示

        // this.option.img = "";

        //将剪裁后base64的图片转化为file格式

        let file = this.convertBase64UrlToBlob(data);

        // this.fileImg=URL.createObjectURL(file);

        var formData = new FormData();

        formData.append("file", file);

        console.log(data)

      });

    },

    // 将base64的图片转换为file文件

    convertBase64UrlToBlob(urlData) {

      //去掉url的头,并转换为byte

      let bytes = window.atob(urlData.split(",")[1]);

      //处理异常,将ascii码小于0的转换为大于0

      let ab = new ArrayBuffer(bytes.length);

      let ia = new Uint8Array(ab);

      for (var i = 0; i < bytes.length; i++) {

        ia[i] = bytes.charCodeAt(i);

      }

      return new Blob([ab], { type: "image/jpeg" });

    },

  },

你可能感兴趣的:(vue cropper图片剪切组件)