cropper是一款使用简单且功能强大的图片剪裁jQuery插件。该图片剪裁插件支持图片放大缩小,支持鼠标滚轮操作,支持图片旋转,支持触摸屏设备,支持canvas,并且支持跨浏览器使用。
cropper提供了大量的参数、方法和事件供图片的剪裁操作。
bower install cropper npm install cropper
使用该图片剪裁插件首先要引入必要的js和css文件。
<script src="/path/to/jquery.js"></script><!-- jQuery is required --> <link href="/path/to/cropper.css" rel="stylesheet"> <script src="/path/to/cropper.js"></script>
可以将图片或canvas直接包裹到一个块级元素中。
<!-- Wrap the image or canvas with a block element --> <div class="container"> <img src="picture.jpg"> </div>
可以使用$.fn.cropper
方法来初始化该图片剪裁插件。
$('.container > img').cropper({ aspectRatio: 16 / 9, crop: function(data) { // Output the result data for cropping image. } });
注意事项:
Access-Control-Allow-Origin
属性。你可以通过$().cropper(options)
方法来设置参数。如果你想改变全局默认参数,可以使用$.fn.cropper.setDefaults(options)
方法。
Number
,默认值NaN
。设置剪裁容器的比例。Function
,默认值null
。当改变剪裁容器或图片时的事件函数。String
(jQuery选择器),默认值''
。添加额外的元素(容器)的预览。注意:
aspectRatio
参数,确保预览容器具有相同的比例Boolean
,默认值true
。在strict模式中,canvas不能小于容器,剪裁容器不能再canvas之外。Boolean
,默认值true
。是否在窗口尺寸改变的时候重置cropper。Boolean
,默认值true
。默认情况下,插件会检测图片的源,如果是跨域图片,图片元素会被添加crossOrigin
class,并会为图片的url添加一个时间戳来使getCroppedCanvas
变为可用。添加时间戳会使图片重新加载,以使跨域图片能够使用getCroppedCanvas
。在图片上添加crossOrigin
class会阻止在图片url上添加时间戳,及图片的重新加载。Boolean
,默认值true
。是否在容器上显示网格背景。Boolean
,默认值true
。是否在剪裁框上显示黑色的模态窗口。Boolean
,默认值true
。是否在剪裁框上显示虚线。Boolean
,默认值true
。是否在剪裁框上显示白色的模态窗口。Boolean
,默认值true
。是否在初始化时允许自动剪裁图片。Number
,默认值0.8
(图片的80%)。0-1之间的数值,定义自动剪裁区域的大小。Boolean
,默认值true
。是否允许移除当前的剪裁框,并通过拖动来新建一个剪裁框区域。Boolean
,默认值true
。是否允许移动剪裁框。Boolean
,默认值true
。是否允许改变剪裁框的大小。Boolean
,默认值true
。是否允许放大缩小图片。Boolean
,默认值true
。是否允许通过鼠标滚轮来缩放图片。Boolean
,默认值true
。是否允许通过触摸移动来缩放图片。Boolean
,默认值true
。是否允许旋转图片。Number
,默认值200
。容器的最小宽度。Number
,默认值100
。容器的最小高度。Number
,默认值0
。canvas 的最小宽度(image wrapper)。Number
,默认值0
。canvas 的最小高度(image wrapper)。Function
,默认值null
。build.cropper
事件的简写方式。Function
,默认值null
。built.cropper
事件的简写方式。Function
,默认值null
。dragstart.cropper
事件的简写方式。Function
,默认值null
。dragmove.cropper
事件的简写方式。Function
,默认值null
。dragend.cropper
事件的简写方式。Function
,默认值null
。zoomin.cropper
事件的简写方式。Function
,默认值null
。zoomout.cropper
事件的简写方式。因为图片是异步加载的,所以你需要在built之后才能调用下面的方法,setAspectRatio
、replace
和destroy
方法例外。
$().cropper({ built: function () { $().cropper('method', argument1, , argument2, ..., argumentN) } }
Number
,水平方向上移动的大小,单位像素。Number
,垂直方向上移动的大小,单位像素。移动一幅图片:
$().cropper('move', 1, 0) $().cropper('move', 0, -1)
ratio
:
Number
缩放一幅图片:
$().cropper('zoom', 0.1) $().cropper('zoom', -0.1)
ratio
:
Number
旋转一幅图片,需要CSS3 Transforms3d的支持(IE10+):
$().cropper('rotate', 90) $().cropper('rotate', -90)
url
:
String
替换图片的URL重建cropper。
返回值:
Object
看下图演示从原始图片中返回的剪裁区域数据。
返回值:
Object
输出容器尺寸数据。
返回值:
Object
输出图片的位置和尺寸大小。
返回值:
Object
输出canvas(图片容器)的位置和尺寸大小。
返回值:
Object
改变canvas(图片容器)的位置和尺寸大小。
返回值:
Object
输出剪裁区域的位置和尺寸大小。
返回值:
Object
改变剪裁区域的位置和尺寸大小。
参数(默认值):
Object
返回值:
HTMLCanvasElement
浏览器支持:
获取canvas绘制的剪裁图像。
在这之后,你可以直接将canvas作为图片显示,或使用canvas.toDataURL方法获取图像的数据链接,或者使用canvas.toBlob方法获取一个blob,并通过FormData方法将它更新到服务器上(如果浏览器支持这些API)。
$().cropper('getCroppedCanvas') $().cropper('getCroppedCanvas', { width: 160, height: 90 });
aspectRatio
:
Number
改变剪裁区域的比例。
mode
(可选项):
String
''
'crop'
或'move'
改变拖拽模式。提示:你可以通过双击来改变"crop" 和 "move"模式。
event.dragType
:
该事件在剪裁区域发生改变时触发。
相关的原始事件:mousedown
、touchstart
。
$('img').on('dragstart.cropper', function (e) { console.log(e.type); // dragstart console.log(e.namespace); // cropper console.log(e.dragType); // ... });
event.dragType
:和dragstart.cropper
相同。
当剪裁区域发生改变时触发。
相关的原始事件:mousemove
、touchmove
。
event.dragType
:和dragstart.cropper
相同。
当剪裁区域改变结束时触发。
相关的原始事件:mouseup
、mouseleave
、touchend
、touchleave
和touchcancel
。
$.fn.cropper.noConflict
方法来修改名称空间。
<script src="other-plugin.js"></script> <script src="cropper.js"></script> <script> $.fn.cropper.noConflict(); // Code that uses other plugin's "$().cropper" can follow here. </script>
作为jQuery插件,你还需要了解浏览器对jQuery的支持。