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. IntelliJ IDEA 2017版 spring-boot2.0.4的集成JSP

    一.必须依赖四个包,其中三个是springboot自带包,可以不写版本号,有一个不在springboot中,需要设置版本号 <!--引入Spring Boot内嵌的Tomcat对Jsp的解析包- ...

  2. C++的重载流输出运算符

    // 下列代码输出什么?#include <iostream>#include <string>// typedef basic_ostream<char> ost ...

  3. 深入浅出javascript(四)网页运行原理

    这一篇是根据不同的书本知识归纳的内容,解答的问题是浏览器是如何工作的? 另外,还有一些长篇的内容,写的是浏览器内部如何架构的,这些内容非常复杂艰深,比现在所写的内容又低了一个层级,希望有时间能总结贴出 ...

  4. Ng第十二课:支持向量机(Support Vector Machines)(三)

    11 SMO优化算法(Sequential minimal optimization) SMO算法由Microsoft Research的John C. Platt在1998年提出,并成为最快的二次规 ...

  5. split(),reverse(),join()

     split() 通过把字符串分割成子字符串来把一个 String 对象分割成一个字符串数组. str.split([separator][, limit])示例: "Webkit Moz ...

  6. STM32F10X-定时器/计数器

    1.STM32F10X的计数器与定时器关系 当时钟连接外脉冲时是计数器:当时钟采用系统内部时钟时是定时器! 2.STM32F10X定时器的时钟源 STM32F10X定时器的时钟不是直接来至于APB1和 ...

  7. kepware http接口 OCaml

    读取某变量的值 open Cohttp_lwt_unix open Cohttp open Lwt let uri = Uri.of_string "http://127.0.0.1:393 ...

  8. 3D打印切片软件介绍

    熟悉3D打印的流程的人都知道,在建立了3D模型以后要就进行切片,但是什么是切片呢?切片实际上就是讲3D模型转化为3D打印机本身可以执行的代码,G代码,M代码. 3D打印流程 今天我们简要的介绍3款切片 ...

  9. 关于java弱引用

    最近在学java虚拟机相关的东西,看了一篇微信的推送  在此分享https://mp.weixin.qq.com/s/oLhZWWWIVc90cNUBukkqHw 一.强引用 强引用就是我们经常使用的 ...

  10. UT源码105032014098

    (2)NextDate函数问题 NextDate函数说明一种复杂的关系,即输入变量之间逻辑关系的复杂性 NextDate函数包含三个变量month.day和year,函数的输出为输入日期后一天的日期. ...