cropper初探

写在前面:

项目中头像上传自己觉得做得不好。是简单的压缩上传,并未做裁剪功能,估摸下一版本应该需要,就提前做好技术储备。

准备用cropper.js实现

正文

用法

html

<div class="img-container">
    <!-- 被裁减的图片 -->
    <img id="image" src="images/picture.jpg" alt="Picture">
</div>

 js

//取图片jq对象
var $image = $('#image');
//设置参数,方法
var options = {
        aspectRatio: 1,
        viewMode: 1,
        preview: '.img-preview',
        crop: function (e) {
          //改变时调用(点击裁剪框/裁剪框大小变化)
          $dataX.val(Math.round(e.x));
          $dataY.val(Math.round(e.y));
          $dataHeight.val(Math.round(e.height));
          $dataWidth.val(Math.round(e.width));
          $dataRotate.val(e.rotate);
          $dataScaleX.val(e.scaleX);
          $dataScaleY.val(e.scaleY);
        }
      };
//也可以用on设置方法监听
$image.on({
    ready: function (e) {
      // 初始化调用
      console.log(e.type);
      croppable = true;
    },
    cropstart: function (e) {
      // 裁剪开始(包括点击新的区域还未开始拖动)
      console.log(e.type, e.action);
    },
    cropmove: function (e) {
      // 裁剪ing(包括点击新的区域还未开始拖动)
      console.log(e.type, e.action);
    },
    cropend: function (e) {
      // 裁剪结束(包括点击新的区域还未开始拖动)
      console.log(e.type, e.action);
    },
    crop: function (e) {
      //改变时调用(点击裁剪框/裁剪框大小变化/放大缩小/等等)
      // on中优先级与options中的一致
      // 顺序仅与调用先后有关
      console.log(e.type, e.x, e.y, e.width, e.height, e.rotate, e.scaleX, e.scaleY);
    },
    zoom: function (e) {
      //底部图片放大缩小
      console.log(e.type, e.ratio);
    }
  }).cropper(options);
//cropper 加载参数,构建编辑器

兼容性看起来可以

Browser support

  • Chrome (latest)
  • Firefox (latest)
  • Safari (latest)
  • Opera (latest)
  • Edge (latest)
  • Internet Explorer 9+

api

api什么的上git
https://github.com/fengyuanchen/cropperjs
一个一个来

填坑

1、剪贴板圆形

查阅issues

https://github.com/fengyuanchen/cropper/issues/545

通过css修改出现圆形

.cropper-crop-box, .cropper-view-box {
    border-radius: 50%;
}

.cropper-view-box {
    box-shadow: 0 0 0 1px #39f;
    outline: 0;
}

猜你喜欢

转载自my.oschina.net/u/2367690/blog/1798438