cropper.js图片裁剪

1.安装

// An highlighted block
npm install cropperjs

2.在需要使用的组件中引入

// An highlighted block
import 'cropperjs/dist/cropper.css'
import Cropper from 'cropperjs'

3.用块元素(容器)包裹图像或画布元素 and 确保图像的大小完全适合容器

// html 结构
// An highlighted block
<div>
  <img id="image" src="picture.jpg">
</div>
// css 样式
// An highlighted block
img {
  display: block;

  /* This rule is very important, please don't ignore this */
  max-width: 100%;
}

4.使用最基本的代码预览效果

// document.getElementById 这是你自己的img图片dom元素,vue 一般使用this.$refs.xxx
const image = document.getElementById('image');
const cropper = new Cropper(image, {
  aspectRatio: 16 / 9,
  crop(event) {
    console.log(event.detail.x);
    console.log(event.detail.y);
    console.log(event.detail.width);
    console.log(event.detail.height);
    console.log(event.detail.rotate);
    console.log(event.detail.scaleX);
    console.log(event.detail.scaleY);
  },
});

5.完成配置,根据自己喜好配置

// An highlighted block
const image = this.$refs.img
    const cropper = new Cropper(image, {
      viewMode: 1,
      dragMode: 'move',
      aspectRatio: 1,
      autoCropArea: 1,
      cropBoxMovable: false,
      cropBoxResizable: false,
      background: false,
      movable: true
    });

6.调用函数发起请求


onConfirm () {
      // 基于服务端的裁切使用 getdata 方法获取裁切参数
      // console.log(this.cropper.getData())

      // 纯客户端的裁切使用 getCroppedCanvas 获取裁切的文件对象
      this.cropper.getCroppedCanvas().toBlob(async blob => {
        // console.log(blob);
        // 如果接口文档要求 content-type 是 application/json
        // 则传递普通 javascript 对象
        // updateUserImg({
        //   photo:blob
        // })

        // 如果接口文档要求content-type 是 multipart/form-data
        // 则我们必须传递 FormData 对象
        const formData = new FormData()
        formData.append('photo', blob)

        const { data } = await updateUserImg(formData)
        // console.log(data);
        // 关闭弹出层
        this.$emit('close')

        // 更新视图
        this.$emit('update-photo', data.data.photo)
      })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值