https://github.com/fengyuanchen/cropper

1、必要的文件引用:

<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>

2、HTML结构

//可以将图片或canvas直接包裹到一个块级元素中。
<!-- Wrap the image or canvas with a block element -->
<div class="container">
<img src="picture.jpg">
</div>

3、插件调用

//可以使用$.fn.cropper方法来初始化该图片剪裁插件。
$('.container > img').cropper({
aspectRatio: 16 / 9,
crop: function(data) {
// Output the result data for cropping image.
}
});

4、部分参数解释

aspectRatio:类型:Number,默认值NaN。----------------设置剪裁容器的比例。
crop:类型:Function,默认值null。--------------------当改变剪裁容器或图片时触犯的事件函数。
preview:类型:String(jQuery选择器),默认值''。-------添加额外的元素(容器)的预览裁剪效果图片。
responsive:类型:Boolean,默认值true。---------------是否在窗口尺寸改变的时候重置cropper。
checkImageOrigin:类型:Boolean,默认值true。---------默认情况下,插件会检测图片的源,如果是跨域图片,图片元素会被添加crossOrigin class,并会为图片的url添加一个时间戳来使getCroppedCanvas变为可用。添加时间戳会使图片重新加载,以使跨域图片能够使用getCroppedCanvas。在图片上添加crossOrigin class会阻止在图片url上添加时间戳,及图片的重新加载。
data:类型:object{}----------------------------------默认情况下,裁剪框在图片的正中间,可以设置四个值:x,y,width,height,裁剪框的位置跟大小。
multiple:类型:Boolean,默认值false。----------------默认情况下,每页只支持一个裁剪器,如果需要支持多个,设置为true。
modal:类型:Boolean,默认值true。--------------------显示(true)或隐藏(false)裁剪器上方的黑色模态图层。
dashed:类型:Boolean,默认值true。-------------------显示(true)或隐藏(false)裁剪区域上方的虚线。
autoCrop:类型:Boolean,默认值true。-----------------初始化时是否允许自动渲染裁剪框。
autoCropArea:类型:Number,默认值0.8(图片的80%)。--0-1之间的数值,定义自动剪裁区域的大小。
dragCrop:类型:Boolean,默认值true。-----------------启用删除当前的裁剪区域,并通过拖动图像创建一个新的区域。
movable:类型:Boolean,默认值true。------------------是否允许移动剪裁框。
resizable:类型:Boolean,默认值true。----------------是否允许改变剪裁框的大小。
zoomable:类型:Boolean,默认值true。-----------------是否允许放大缩小图片。
rotatable:类型:Boolean,默认值true。----------------是否允许旋转图片。
minWidth:类型:Number,默认值0。---------------------裁剪区域最小宽度。
minHeight:类型:Number,默认值0。--------------------裁剪区域最小高度。
maxWidth:类型:Number,默认值Infinity。--------------裁剪区域最大宽度。
maxHeight:类型:Number,默认值Infinity。-------------裁剪区域最大高度。

5、部分方法解释

ready:类型:Function --------------------------------加载图片是异步过程,需要图片加载成功后执行的方法放入ready中
crop:类型:Function --------------------------------当改变剪裁容器或图片时触犯的事件函数

6、实战例子(洋老板)

<script>
var croppable = false;
var $image; //需要裁剪的图片
var $button; //点击按钮确定裁剪
var $result; //裁剪图片预览
var layerIndex = null;
function getRoundedCanvas(sourceCanvas) {
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
var width = sourceCanvas.width;
var height = sourceCanvas.height; canvas.width = width;
canvas.height = height;
context.beginPath();
context.arc(width / 2, height / 2, Math.min(width, height) / 2, 0, 2 * Math.PI);
context.strokeStyle = 'rgba(0,0,0,0)';
context.stroke();
context.clip();
context.drawImage(sourceCanvas, 0, 0, width, height); return canvas;
} function imgFileUpload() {
var input = document.getElementById("imgFileUpload");
var result,div; if(typeof FileReader==='undefined'){
// result.innerHTML = "抱歉,你的浏览器不支持 FileReader";
input.setAttribute('disabled','disabled');
}else{
input.addEventListener('change',readFile,false);
}
function readFile(){
var files = this.files[0];
if (!/image\/\w+/.test(files.type)) {
alert("请上传一张图片~");
return false;
}
var reader = new FileReader();
reader.readAsDataURL(files);
reader.onload = function(e) {
var _this = this;
layerIndex = layer.open({
type: 1
,content:'<div style="display: block;height: 100%;position: relative"><img id="image" src="" alt="Picture"> <button type="button" id="button" style="position: fixed;left: 50%;bottom: 20px;z-index: 99">Crop</button></div>'
,anim: 'up'
,style: 'position:fixed; bottom:0; left:0; width: 100%; height: 100%; padding:10px 0; border:none;opacity:0.5;background:#000'
,success : function () {
$("#image").attr('src',_this.result);
$image = $("#image");
$image.cropper({
aspectRatio: 1,
viewMode: 1,
ready: function () {
croppable = true;
}
});
$button = $('#button');
$result = $('#result');
$button.on('click', function () {
var croppedCanvas;
var roundedCanvas;
if (!croppable) {
return;
}
croppedCanvas = $image.cropper('getCroppedCanvas');
// Round
roundedCanvas = getRoundedCanvas(croppedCanvas);
layer.close(layerIndex);
$result.attr('src',roundedCanvas.toDataURL());
});
}
}); };
}
} $(function () {
imgFileUpload();
});
</script>
<ul class="system-list">
<li class="border-b-1px">
<div class="a">
<span class="name">头像</span>
<span id="account" style="position: relative">
<input type="file" class="img-file" id="imgFileUpload" style="opacity: 0;position: absolute;width: 36px;height: 36px;left: 0;top: 5px;"/>
<img src="/images/user-index-default-icon.png" alt="" id="result" width="36" height="36" style="display:block;vertical-align: top;margin-top: 5px;"/>
</span>
<span class="arrow"><img src="/images/go.png"></span>
</div>
</li>
</ul>

jquery.cropper 裁剪图片上传的更多相关文章

  1. Java+jquery实现裁剪图片上传到服务器

    大体分两步: 1.利用jquery裁剪图片,把裁剪到的几个点传入后端 2.利用前端传入的几个点,来裁剪图片 首先,用到一个jquery的插件 imgAreaSelect 实例及插件下载地址:http: ...

  2. Jquery插件-Html5图片上传并裁剪

    /** * 图片裁剪 * @author yanglizhe * 2015/11/16 */ (function($){ /** * Drag */ var Drag={obj:null,init:f ...

  3. mui开发app之cropper裁剪后上传头像的实现

    在大多数app项目中,都需要对用户头像的上传,之前做web开发的时候,我主要是通过input type=file的标签实现的,上传后,使用php对图片进行裁剪,这种方式比较传统简单. 此次app开发中 ...

  4. JQuery插件:图片上传本地预览插件,改进案例一则。

    /* *名称:图片上传本地预览插件 v1.1 *作者:周祥 *时间:2013年11月26日 *介绍:基于JQUERY扩展,图片上传预览插件 目前兼容浏览器(IE 谷歌 火狐) 不支持safari *插 ...

  5. jquery实现本地图片上传预览和限流处理

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  6. 【原创】MVC项目中使用JQuery的upladify图片上传插件相关问题的解决方案

    一. 关于Uploadify Uploadify是一个jQuery插件,你可以很容易的为你的网站添加多个文件上传功能.有两个不同的版本(HTML5和Flash)允许你灵活选择为您的网站和回退方法正确实 ...

  7. jquery插件fileupload图片上传(前端如何处理)

    1.页面首先引入jquery,版本不要低于1.6 <script src="../js/jquery.min.js"></script>2.其次页面引入对应 ...

  8. JQuery的ajaxFileUpload图片上传初试

    本案例主要说讲使用ajaxFileUpload实现图片的异步上传. 1.html代码部分 这里的代码,主要设置一下name,后台获取时候要用到,还有设置一个onchange的事件对应的方法:ajaxF ...

  9. jQuery File Upload 图片上传解决方案兼容IE6+

    1.下载:https://github.com/blueimp/jQuery-File-Upload 2.命令: npm install bower install ================= ...

随机推荐

  1. Mybatis-Plus 实战完整学习笔记(七)------select测试二

    1.查询selectOne  (3.0.3版) @Test public void selectMethod() throws SQLException { // 根据ID获取一个对象的数据 Empl ...

  2. java学习2打架代码编写

    在同一个包中的Player类 package work; public class Player { private String name; private int hp; private int ...

  3. 第03章:MongoDB启动参数说明

    ①基本配置 --quiet # 安静输出 --port arg # 指定服务端口号,默认端口27017 --bind_ip arg # 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默 ...

  4. java中的标识符、关键字、保留字

    Java中关键字(keyword)和保留字(reservedword) Keyword :Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等. Reserv ...

  5. MFCC

    在语音识别研究领域,音频特征的选择至关重要.在这里介绍一种非常成功的音频特征——Mel Frequency Cepstrum Coefficient(MFCC),中文名字为梅尔频率倒谱系数.MFCC特 ...

  6. 20155205《Java程序设计》实验五(网络编程与安全)实验报告

    20155205 <Java程序设计>实验五(网络编程与安全)实验报告 一.实验内容及步骤 (一) 两人一组结对编程 参考http://www.cnblogs.com/rocedu/p/6 ...

  7. js 数组操作函数有:push,pop,join,shift,unshift,slice,splice,concat

    (1)push 和 pop 这两个函数都是对数组从尾部进行压入或弹出操作.push(arg1,arg2,...)可以每次压入一个或多个元素,并返回更新后的数组长度.注意如果参数也是数组的话,则是将全部 ...

  8. 使用命令行打包 nuget 包

    对于那些不打算涉及这么复杂而又想制作自己的 nuget 包的园友们,我是推荐使用 Nuget Package Explorer 来制作的.关于这个图形化的 nuget 包管理软件的使用,博客园内有相关 ...

  9. SignalR 设计理念(一)

    SignalR 设计理念(一) 实现客户端和服务器端的实时通讯. 问题阐述 客户端提供的方法不确定! 客户端的方法参数不确定! 不同的名称和参数要分别调用指定的方法! 调用客户端方法时,忽略大小写! ...

  10. .NET MVC 学习笔记(七)— 控制input控件

    .NET MVC 学习笔记(七)— 控制input控件 画面中有时候需要输入数字,这时就需要控制input的输入.以下为保留两位有效数字. /* * 初始化数字输入 */ function initD ...