jquery+cropper剪切、旋转、缩放图片

cropper是一款使用简单且功能强大的图片剪裁jQuery插件。该图片剪裁插件支持图片放大缩小,支持图片旋转,支持触摸屏设备,支持canvas,并且支持跨浏览器使用。

效果

demo源码地址
在这里插入图片描述

安装cropper

cnpm i cropper --save-dev

在这里插入图片描述

使用cropper

使用前,我们需要先了解一下cropper 文档,以及cropper的源码

cropper参数源码

在这里插入图片描述

常用参数说明
名称类型及默认值说明
viewMode类型:String,默认值0。定义裁剪器的视图模式
dragMode类型:String,默认值crop。定义裁剪器的拖动模式
initialAspectRatio类型:Number,默认值NaN。定义裁剪框的初始纵横比
aspectRatio类型:Number,默认值NaN。例如 2/1,3/1,2/3 …定义裁剪框的纵横比
preview类型:String,默认值 ’ '。用于预览容器的选择器
background类型:Boolean,默认值true。是否在容器上显示网格背景
autoCropArea类型:Number,默认值0.8。定义自动剪裁区域的大小
zoomOnWheel类型:Boolean,默认值true。是否允许鼠标 缩放图片
cropBoxResizable类型:Boolean,默认值true。是否允许改变剪裁框的大小
cropBoxMovable类型:Boolean,默认值true。是是否可以移动裁剪框
rotatable类型:Boolean,默认值true。是否允许旋转图片

CDN引入

<script src="https://www.jq22.com/jquery/jquery-1.7.1.js"></script>
<script type="text/javascript" src="assets/js/cropper.js"></script>
<link rel="stylesheet" type="text/css" href="assets/css/cropper.css">

核心html代码

 <div class="popup-wrap">
    <div  class="s-upload-container">
      
      <div class="head">
        <span>上传图片</span>
        <input type="button" class="btn" id="closeBtn" value="关闭" />
      </div>
      <div class="s-upload-main">
        <!-- 上传图片 -->
        <div class="top-box">
          <span class="title">图片上传</span>
          <div class="btn file-box">
            选择文件
            <input type="file" accept="image/jpg,image/jpeg,image/png" name="file" id="file" class="btn" onchange="selectImg(this)" multiple="multiple">
          </div>
          <div class="right">预览区域</div>
        </div>
        <div class="s-upload-content">
          <!-- 裁剪区域 -->
          <div class="left-box">
            <img src="" id="imageId" alt="" class="image"> 
          </div>
          <!-- 预览区域 -->
          <div class="right-box">
            <div class="previewBox"></div>
          </div>
        </div>
        <div class="action bottom-box">
          <!-- 旋转 -->
            <div class="left">
              <input type="button" id="btnLeft"  value="向左旋转" class="btn" onclick="rotateFn('1')">
              <input type="button" id="btnRight" value="向右旋转" class="btn" onclick="rotateFn('2')">
            </div>
            <div class="right">
              <!-- 放大、缩小、还原 -->
              <input type="button" id="btnLarge" class="btn" value="放大">
              <input type="button" id="btnSmall" class="btn" value="缩小" >
              <input type="button" id="btnScale" class="btn" value="换向">
              <input type="button" id="btnInit" class="btn" value="还原">
              <!-- 保存 -->
              <input type="button" id="btnSubmit" class="btn submit" value="保存修改" >
            </div>
        </div>
      </div>	
    </div>
  </div>

事件方法

img

裁剪区域的img,必须要一个可见的块级标签包裹。

初始化
// cut_size 为裁剪的限制尺寸
function init (cut_size){
	var sizeArr = [0,0];
	var aspectRatio = null
	if(cut_size){
		sizeArr = cut_size.split('*');
		let w = sizeArr[0]*1
		var h = sizeArr[1]*1

		if(w > h){
			aspectRatio = (w/h)  / 1
		} else {
			aspectRatio = 1 / (h/w)
		}
	}


	$('#imageId').cropper({
		viewMode: 1,
		dragMode: 'none',
		initialAspectRatio: 1,
		preview: '.previewBox',
		// 是否在容器上显示网格背景
		background: true,
		// 定义自动剪裁区域的大小
		// autoCropArea: 1,
		// 是否允许鼠标 缩放图片
		zoomOnWheel: false,
		// 是否允许改变剪裁框的大小
		cropBoxResizable:true,
		// 是否可以移动裁剪框
		cropBoxMovable:true,
		// 是否允许旋转图片
		rotatable: true,
		aspectRatio:aspectRatio
	})
}
rotate 旋转图像
// 角度
var deg = 0;
//向左旋转
$("#btnLeft").on("click",function () {
	rotateFn(1)
});
//向右旋转
$("#btnRight").on("click",function () {
	rotateFn(2)
});
// 旋转
function rotateFn (type){
	if(type ==1){
		deg += 90
	} else {
		deg -= 90
	}

	$('#imageId').cropper("rotate", deg);
}
zoom 放大、缩小图像
// 放大
$("#btnLarge").on("click",function () {
	$('#imageId').cropper("zoom",0.1);
});

// 缩小
$("#btnSmall").on("click",function () {
	$('#imageId').cropper("zoom",-0.1);
});
scaleX 翻转图像
	var flagX = true;
	$("#btnScale").on("click",function () {
		if(flagX){
			$('#imageId').cropper("scaleX", -1);
			flagX = false;
		}else{
			$('#imageId').cropper("scaleX", 1);
			flagX = true;
		}
		flagX != flagX;
	});
reset 还原裁剪区域
$("#btnInit").on("click",function () {
	$('#imageId').cropper("reset");
});
destroy 销毁cropper
$('#imageId').cropper("destroy");
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值