ionic3+angular4 使用cropperJS 完成图片裁剪功能

需求:

图片拍照或者图库选择之后,将图片进行裁剪(图片允许放大,缩小,移动),裁剪框不变

实现:

1.安装cropperjs: npm install cropperjs

2.在页面中导入:

3.裁剪插件初始化

initCropper(){
    let image = document.getElementById("imgPrev") as HTMLImageElement;
    this.cropper = new Cropper(image,{
      viewMode:0, //0:没有限制;1:裁剪框必须在图片内移动;2:2图片 不全部铺满1;3:图片填充整个裁剪框
      dragMode  :'move',//'crop': 可以产生一个新的裁剪框  ‘move’: 只可以移动3  ‘none’: 什么也不处理
      responsive:true, //调整窗口大小时,重新渲染cropper
      cropBoxResizable:false, //调整裁剪框大小
      autoCropArea:1,  //自动裁剪面积大小和图片的对比 
      center:true,  //裁剪框在图片正中心。
      cropBoxMovable :false, //是否允许移动裁剪框
      autoCrop:true, //初始化时,自动生成裁剪框 当初始化时,可以自动生成图像。(就是自动显示裁剪框,改成false裁剪框自动消失)
      background:true, //显示裁剪区域的背景方格-显示容器的网格背景。(就是后面的马赛克)
      modal:false,   //显示图片上方的黑色模态并在裁剪框下面。
      guides:false, //显示在裁剪框上方的虚线
      highlight:true, //在裁剪框上方显示白色的区域(突出裁剪框)。
      zoomOnWheel:true,  //是否可以通过移动鼠标放大图像
      zoomOnTouch:true, //是否可以通过拖动触摸放大图像
      zoomable:true,//是否允许放大图像
      movable:true, //是否允许移动后面的图片
      rotatable:true, //是否允许旋转图像
      scalable:true,//是否允许缩放图像
      restore:true, //在调整窗口大小后恢复裁剪的区域。
      minContainerWidth:200,//容器的最小宽度
      minContainerHeight:100,//容器的最小高度
      minCropBoxWidth:100,//裁剪层的最小宽度
      minCropBoxHeight:50,//裁剪层的最小高度
      wheelZoomRatio:0.1, //鼠标移动图像时,定义缩放比例
      aspectRatio: 1/1, //裁剪框的宽高比
      zoom: function (e) {
      },
      crop: function (e) {
       
      },

    });

    setTimeout(()=>{
      let winWidth = document.body.offsetWidth;
      let winHeight = document.body.offsetHeight*0.75;
      let boxClipWid = winWidth*0.6;
      let boxClipTop = (winHeight-boxClipWid)/2;
      let boxClipLeft = (winWidth-boxClipWid)/2;
      this.cropper.setCropBoxData({
        left: boxClipLeft,
        top: boxClipTop,
        width: boxClipWid,
        height:boxClipWid,
      })
    },200)
  }

这个地方一定要选 move!!!

4.裁剪:

 clip(){
    let clipImgdata = this.cropper.getCroppedCanvas();
    this.clipUrl = clipImgdata.toDataURL('image/jpg');
    this.viewCtrl.dismiss(this.clipUrl);
  }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值