一、引入文件

<script src="jquery.min.js"></script>
<link rel="stylesheet" href="cropper.css">
<script src="cropper.js"></script>

二、html代码

<div class="box">
<img id="image">
</div> <div id="gg">
<input type="file" id="selectImg"/>
<button id="commit">确认</button>
<button id="rotate">旋转</button>
</div>
<!--剪切后预览图片-->
<img id="yulan">

三、js代码

<script>
//图片选择 触发的事件
$("#selectImg").change(function(){
if(!this.files || !this.files[0]){
return
}
var reader = new FileReader();
reader.onload = function(evt) {
var replaceSrc = evt.target.result;
// 更换cropper的图片
$('#image').cropper('replace', replaceSrc, false);// 默认false,适应高度,不失真
}
reader.readAsDataURL(this.files[0]);
}) //旋转图片
$("#rotate").click(function(){
$("#image").cropper('rotate',30)
}) //确定裁剪
$("#commit").on("click",function(){
var cas = $('#image').cropper('getCroppedCanvas');// 获取被裁剪后的canvas
var base64 = cas.toDataURL('image/jpeg'); // 转换为base64
console.log(encodeURIComponent(base64))
$("#yulan").prop('src',base64);//预览 }) //初始化 可以给#image元素一张默认图片 就可以直接看效果
$('#image').cropper({//这里是给img 即被裁剪的图片进行参数配置
aspectRatio: 100 / 100,//裁剪框的比例
preview: $('.avatar-preview'),//预览的容器
autoCropArea: 0.5,//初始化裁剪框大小(相对于图片大小做比例)
movable:false,//是否能移动裁剪框(这里是可以移动图片 裁剪框处于不动的状态 按你的需求设置)
dragCrop:false,//不允许重新开裁剪框
resizable:false,//不允许改变裁剪框大小
background:false,
crop: function(data) {
//data是 x,y width, height rotate scaleX scaleY裁剪框的坐标,以及裁剪出来的图片长宽 旋转角度 缩放等
$('#x').val(data.x);
$('#y').val(data.y);
console.log(data)
//console.log('w'+data.width+' height'+data.height);
},
//这几个回调函数
build: function (e) { //是图片绘制到cropper自动生成的canvas的开始 加载开始
//过渡效果
},
built: function (e) { //加载完成 绘制完成 获取到相应的data }
});

四、完整代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>图片上传测试</title>
<script src="jquery.min.js"></script>
<link rel="stylesheet" href="cropper.css">
<script src="cropper.js"></script>
<style type="text/css">
.box {
width: 400px;
height: 400px;
}
#gg{
margin-top:50px;
}
</style>
</head> <body> <div class="box">
<img id="image">
</div> <div id="gg">
<input type="file" id="selectImg"/>
<button id="commit">确认</button>
<button id="rotate">旋转</button>
</div>
<!--剪切后预览图片-->
<img id="yulan">
<script>
//图片选择 触发的事件
$("#selectImg").change(function(){
if(!this.files || !this.files[0]){
return
}
var reader = new FileReader();
reader.onload = function(evt) {
var replaceSrc = evt.target.result;
// 更换cropper的图片
$('#image').cropper('replace', replaceSrc, false);// 默认false,适应高度,不失真
}
reader.readAsDataURL(this.files[0]);
}) //旋转图片
$("#rotate").click(function(){
$("#image").cropper('rotate',30)
}) //确定裁剪
$("#commit").on("click",function(){
var cas = $('#image').cropper('getCroppedCanvas');// 获取被裁剪后的canvas
var base64 = cas.toDataURL('image/jpeg'); // 转换为base64
console.log(encodeURIComponent(base64))
$("#yulan").prop('src',base64);//预览 }) //初始化 可以给#image元素一张默认图片 就可以直接看效果
$('#image').cropper({//这里是给img 即被裁剪的图片进行参数配置
aspectRatio: 100 / 100,//裁剪框的比例
preview: $('.avatar-preview'),//预览的容器
autoCropArea: 0.5,//初始化裁剪框大小(相对于图片大小做比例)
movable:false,//是否能移动裁剪框(这里是可以移动图片 裁剪框处于不动的状态 按你的需求设置)
dragCrop:false,//不允许重新开裁剪框
resizable:false,//不允许改变裁剪框大小
background:false,
crop: function(data) {
//data是 x,y width, height rotate scaleX scaleY裁剪框的坐标,以及裁剪出来的图片长宽 旋转角度 缩放等
$('#x').val(data.x);
$('#y').val(data.y);
console.log(data)
//console.log('w'+data.width+' height'+data.height);
},
//这几个回调函数
build: function (e) { //是图片绘制到cropper自动生成的canvas的开始 加载开始
//过渡效果
},
built: function (e) { //加载完成 绘制完成 获取到相应的data }
});
</script>
</body> </html>

cropper文档地址:http://www.jq22.com/jquery-info9322

cropper实现图片剪切上传的更多相关文章

  1. Vue项目图片剪切上传——vue-cropper的使用

    最近自己在研究vue,然后做了一个小型的后台管理系统用来练手,开发过程中,想到了剪切图片上传用户头像的需求.上网百度了一番,发现好多用的都是vue-cropper.我也就用了,个人感觉还是挺好用的.现 ...

  2. layui+croppers完成图片剪切上传

    不多说直接上代码: 前台代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" / ...

  3. cropper,图片剪辑上传工具的使用

    cropper工具是一个功能强,兼容性好的一个图片裁剪和上传工具 GitHub地址:https://github.com/kesixin/Head_Cut_PC <div class=" ...

  4. 图片剪裁上传插件 - cropper

    图片剪裁上传插件 - cropper <style> .photo-container{float: left;width: 300px;height: 300px;} .photo-co ...

  5. vue中使用cropperjs进行图片裁剪上传

    下面代码直接就可以复制使用了,但是需要在本地下个cropperjs,下载命令:npm install cropperjs --save-dev <template> <div id= ...

  6. 第三百九十节,Django+Xadmin打造上线标准的在线教育平台—Django+cropper插件头像裁剪上传

    第三百九十节,Django+Xadmin打造上线标准的在线教育平台—Django+cropper插件头像裁剪上传 实现原理 前台用cropper插件,将用户上传头像时裁剪图片的坐标和图片,传到逻辑处理 ...

  7. 分享图片压缩上传demo,可以选择一张或多张图片也可以拍摄照片

    2016-08-05更新: 下方的代码是比较OLD的了,是通过js进行图片的剪切 旋转 再生成,效率较低. 后来又整合了一个利用native.js本地接口的压缩代码 ,链接在这 .页面中有详细的说明, ...

  8. asp.net实现图片在线上传并在线裁剪

    1.说明 接上一篇文章uploadify实现多附件上传完成后,又突然用到头像上传并在线裁剪.在网上找个众多例子都没有符合要求的,有一篇文章写的不错,就是文旺老兄写的这篇Asp.Net平台下的图片在线裁 ...

  9. 三款不错的图片压缩上传插件(webuploader+localResizeIMG4+LUploader)

    涉及到网页图片的交互,少不了图片的压缩上传,相关的插件有很多,相信大家都有用过,这里我就推荐三款,至于好处就仁者见仁喽: 1.名气最高的WebUploader,由Baidu FEX 团队开发,以H5为 ...

随机推荐

  1. 287. Find the Duplicate Number 找出数组中的重复数字

    [抄题]: Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive ...

  2. Solidity的三种合约间的调用方式 call、delegatecall 和 callcode

    0x00 前言 Solidity(http://solidity.readthedocs.io/en/v0.4.24/) 是一种用与编写以太坊智能合约的高级语言,语法类似于 JavaScript. S ...

  3. CPU与IRP的一些相关函数

    VOID KiAdjustIrpCredits ( VOID )其中 Number = KeNumberProcessors;Prcb = KiProcessorBlock[Index]; 多核情况下 ...

  4. [C#.net]ListBox对Item进行重绘,设置背景色和前景色

    别的不多说了,上代码,直接看 首先设置这行,或者属性窗口设置,这样才可以启动手动绘制,参数有三个 Normal: 自动绘制 OwnerDrawFixed:手动绘制,但间距相同 OwnerDrawVar ...

  5. 数据库-mysql命令

    1.项目过程:概要设计阶段 —— 架构师 任务:技术选型(网络/语言/框架).项目结构(子系统/模块).数据结构(数据特点/内容) 项目中存储数据的方式: (1)服务器内存:存取速度快:非永久存储.容 ...

  6. 决策树模型组合之随机森林与GBDT(转)

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  7. Spring-Data-JPA @Query注解 Sort排序

    当我们使用方法名称很难,达到预期的查询结果,就可以使用@Query进行查询,@Query是一种添加自定义查询的便利方式 (方法名称查询见http://blog.csdn.net/niugang0920 ...

  8. AngularJS封装webupload实现文件夹上传

    百度的webupload没有开放api获取整个文件夹的信息.本文是二次开发webupload实现获取文件夹信息. 指令封装 /** * @license lx.ui.framework v1.0.0 ...

  9. python数据结构之直接插入排序

    python数据结构之直接插入排序 #-*-encoding:utf-8-*- ''' 直接插入排序: 从序列的第二个元素开始,依次与前一个元素比较,如果该元素比前一个元素大, 那么交换这两个元素.该 ...

  10. Android -Services 使用简介

    Android Services 四大组件之一,主要用于后台长时间运行.没有界面.这里讲解两种services的启动还有AIDL通信方式. 1.startservices a.建立继承services ...