cropper.js图片裁剪
最近做电子名片的项目,可是个人照片展示上出现了 用户上传的图片尺寸严重失调,所以要求进行图片裁剪,再此我对图片裁剪进行调研 还不太成熟 以后再改
这个实现的原理是 前台获取到 坐标 图片的尺寸 原图文件 传给后台进行裁剪
这个是我在网上找的一个插件 cropper功能很强大
这里是官方文档
首先使用cropper必须引入对应得css和js,还有jquery
<script src="jquery.js"></script>
<link href="cropper.css" rel="stylesheet">
<script src="cropper.js"></script>
html结构,cropper是针对img得 所以配置项需要配置到img上
<div class="container">
<img id="img" src="img/add-pic.png">
</div>
相对的js配置(这是项目里应用的部分 参数 如果以后有改动 需要根据API配置)
 $('.container > img').cropper({//这里是给img 即被裁剪的图片进行参数配置
            aspectRatio: 720 / 425,//裁剪框的比例
            preview: $('.avatar-preview'),//预览的容器
			minContainerHeight: 1080,//容器最小高度
			autoCropArea: 0.9,//初始化裁剪框大小(相对于图片大小做比例)
			movable:false,//是否能移动裁剪框(这里是可以移动图片 裁剪框处于不动的状态 按你的需求设置)
			dragCrop:false,//不允许重新开裁剪框
                   resizable:false,//不允许改变裁剪框大小
            crop: function(data) {
                //data是 x,y width, height rotate scaleX scaleY裁剪框的坐标,以及裁剪出来的图片长宽 旋转角度 缩放等
                $('#x').val(data.x);
                $('#y').val(data.y);
                console.log('w'+data.width+'   height'+data.height);
            },
            //这几个回调函数
            build: function (e) { //是图片绘制到cropper自动生成的canvas的开始   加载开始
                //过渡效果
            },
            built: function (e) { //加载完成  绘制完成 获取到相应的data
            }
        });
效果图:

并且移动图片的过程中 会获取到data

上传的时候,使用了FromData 但是 在调用ajax的时候 会报错 这个问题后来使用特别方式解决 以后研究
var data = new FormData();
data.append("x",Math.floor(myval('x')));
data.append("y",Math.floor(myval('y')));
data.append("w",Math.floor(myval('w')));
data.append("h",Math.floor(myval('h'))); data.append("file",$("#imgUpload")[0].files[0]);
data.append("name",$("#imgUpload").val());
data.append('jsonpcallback','a');
由于会报错 所以有人告诉我这样一个方式 但是只能从error中获取值
$.ajax({
"type": 'post',
"url": "imageCut",
"dataType": "json",
"data": data,
// 告诉jQuery不要去处理发送的数据 发送了fromData对象
processData : false,
// 告诉jQuery不要去设置Content-Type请求头
contentType : false,
success: function (resp) {
console.log(resp)
},
error:function(data){
if(data.status==200){
//这个就是裁剪后图片的线上地址
console.log(data.responseText);
}
}
});
上传的方式,
1.可以通过form表单的方式进行
2.ajax上传(将图片转化为Base64编码)
Demo 的HTML结构
<form action="http://172.16.105.43:8080/vcard/imageCut" enctype="multipart/form-data" method="post" id="form">
<div class="pic">
<a href="javascript:void(0)" class="add"><input type="file" name="file" id="imgUpload"/></a>
<div class="mask_box">
<div class="container">
<img id="img" src="img/add-pic.png">
</div>
<input type="hidden" name="x" id="x" value="0"/>
<input type="hidden" name="y" id="y" value="0"/>
<input type="hidden" name="w" id="w" value="720"/>
<input type="hidden" name="h" id="h" value="425"/>
<div class="btn_submit"><span onclick="cancel()" >取消</span><span class="right" onclick="upload()">完成</span></div>
</div>
</div>
</form>
关于利用表单提交 裁剪以后的图片base64码,链接戳这里
cropper.js图片裁剪的更多相关文章
- 开源JS图片裁剪插件
		
开源JS图片裁剪插件 一.总结 一句话总结: 要用点赞最高的插件,这样适用性最好,效果最好,出问题的概率也最低,这里电脑端和手机端都可以用的建议用 cropper.js 二.5款好用的开源JS图片裁剪 ...
 - 图片裁剪的js有哪些(整理)
		
图片裁剪的js有哪些(整理) 一.总结 一句话总结:如果用了amaze框架就去amaze框架的插件库里面找图片裁剪插件,如果没用,jcrop和cropper都不错. 1.amazeui的插件库中有很多 ...
 - node.js平台下,cropper.js实现图片裁剪预览并转换为base64发送至服务端。
		
一 .准备工作 1.首先需要先下载cropper,常规使用npm,进入项目路径后执行以下命令: npm install cropper 2. cropper基于jquery,在此不要忘记引入jq,同时 ...
 - cropper.js实现图片裁剪预览并转换为base64发送至服务端。
		
一 .准备工作 1.首先需要先下载cropper,常规使用npm,进入项目路径后执行以下命令: npm install cropper 2. cropper基于jquery,在此不要忘记引入jq,同时 ...
 - Vue中使用Cropper.js裁剪图片
		
Cropper.js是一款很好用的图片裁剪工具,可以对图片的尺寸.宽高比进行裁剪,满足诸如裁剪头像上传.商品图片编辑之类的需求. github: https://github.com/fengyuan ...
 - 图片裁剪 cropper.js 上传组件封装 vue
		
//HTML cropper.js 文档地址: https://github.com/fengyuanchen/cropperjs/blob/master/README.md <template ...
 - cropper.js 超级好用的裁剪图片工具
		
最近要做一个照片裁剪功能.就选用了cropper.js 代码如下:贴出来 <div class="container"> <div class="row ...
 - cropper.js裁剪图片的使用
		
这两天难得有时间可以整理一下最近学习的东西,这两天项目中用到了头像上传裁剪的功能,这里只介绍头像的裁剪吧. 单独实现图片剪裁的功能还是挺容易的,入门级别的.看一遍官方给的文档,基本上就明白了.大家如果 ...
 - js插件---强大的图片裁剪Cropper
		
js插件---强大的图片裁剪Cropper 一.总结 一句话总结:官网或者github里面的文档或者demo才是真的详细 使用的话找到图片裁剪后的base64数据,然后这个数据可下载可传递到服务器 1 ...
 
随机推荐
- undefined reference to symbol '_ZNK11GenICam_3_016GenericException17GetSourceFileNameEv'
			
今天在编译DALSA二次开发的源码时,出现了如下错误: /usr/bin/ld: ./out/camera.o: undefined reference to symbol '_ZNK11GenICa ...
 - MVC 基于 AuthorizeAttribute 实现的登陆权限控制
			
代码的执行顺序是 OnAuthorization–>AuthorizeCore–>HandleUnauthorizedRequest. 如果AuthorizeCore返回false时,才会 ...
 - Linux文件系统深度讨论【转】
			
本文旨在对Linux文件系统概念高级工作方式进行的讨论,不是对特定文件系统类型(如EXT4)如何工作的低级描述,也不是对文件系统命令的教程. 每台通用计算机都需要将各种类型的数据存储在硬盘驱动器( ...
 - 用sqlplus为oracle创建用户和表空间
			
用Oracle自带的企业管理器或PL/SQL图形化的方法创建表空间和用户以及分配权限是相对比较简单的, 本文要介绍的是另一种方法就是使用Oracle所带的命令行工具SQLPLUS来创建表空间. 打开S ...
 - CSS3-字体渐变色
			
示例:Mauger`s Blog <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"& ...
 - mongo 的导入和导出
			
1.导出工具:mongoexport 1.概念: mongoDB中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件.可以通过参数指 ...
 - Android 基础 二 四大组件 Activity
			
Activity Intent IntentFilter 一理论概述 一. Activity 用来提供一个能让用户操作并与之交互的界面. 1.1 启动 startActivity(Intent int ...
 - 用gojs写的流程图demo
			
领导要求,可以展开收缩子级,但是子级可以有多个父级,一开始用的dagre-d3.js,但是功能不是太全,无意中看到gojs,感觉还不错,所以拿来改了改... 代码地址:https://github.c ...
 - npm无反应的问题&npm常用命令
			
RT: windows安装完nodejs后做了相关环境变量配置后,cmd输入npm命令无反应,就光标一直闪,百度了半天终于找到解决办法 解决方法:C:\Users\Administrator(或你的账 ...
 - bzoj3276磁力 两种要求下的最大值:分块or线段树+拓扑
			
进阶指南上的做法是分块的.. 但是线段树搞起来也挺快,将磁石按照距离排序,建立线段树,结点维护区间质量最小值的下标 进行拓扑,每次在可行的范围内在线段树中找到质量最小的下标取出,取出后再将线段树对应的 ...