最近做电子名片的项目,可是个人照片展示上出现了 用户上传的图片尺寸严重失调,所以要求进行图片裁剪,再此我对图片裁剪进行调研 还不太成熟 以后再改

这个实现的原理是 前台获取到 坐标 图片的尺寸 原图文件 传给后台进行裁剪

这个是我在网上找的一个插件 cropper功能很强大

这里是官方文档

首先使用cropper必须引入对应得css和js,还有jquery

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

html结构,cropper是针对img得 所以配置项需要配置到img上

  1. <div class="container">
  2. <img id="img" src="img/add-pic.png">
  3. </div>

相对的js配置(这是项目里应用的部分 参数 如果以后有改动 需要根据API配置)

  1. $('.container > img').cropper({//这里是给img 即被裁剪的图片进行参数配置
  2. aspectRatio: 720 / 425,//裁剪框的比例
  3. preview: $('.avatar-preview'),//预览的容器
  4. minContainerHeight: 1080,//容器最小高度
  5. autoCropArea: 0.9,//初始化裁剪框大小(相对于图片大小做比例)
  6. movable:false,//是否能移动裁剪框(这里是可以移动图片 裁剪框处于不动的状态 按你的需求设置)
  7. dragCrop:false,//不允许重新开裁剪框
  8.        resizable:false,//不允许改变裁剪框大小
  9. crop: function(data) {
  10. //data是 x,y width, height rotate scaleX scaleY裁剪框的坐标,以及裁剪出来的图片长宽 旋转角度 缩放等
  11. $('#x').val(data.x);
  12. $('#y').val(data.y);
  13. console.log('w'+data.width+' height'+data.height);
  14. },
  15. //这几个回调函数
  16. build: function (e) { //是图片绘制到cropper自动生成的canvas的开始 加载开始
  17. //过渡效果
  18. },
  19. built: function (e) { //加载完成 绘制完成 获取到相应的data
  20.  
  21. }
  22.  
  23. });

  效果图:

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

上传的时候,使用了FromData 但是 在调用ajax的时候 会报错 这个问题后来使用特别方式解决 以后研究

  1. var data = new FormData();
  2. data.append("x",Math.floor(myval('x')));
  3. data.append("y",Math.floor(myval('y')));
  4. data.append("w",Math.floor(myval('w')));
  5. data.append("h",Math.floor(myval('h')));
  6.  
  7. data.append("file",$("#imgUpload")[0].files[0]);
  8. data.append("name",$("#imgUpload").val());
  9. data.append('jsonpcallback','a');

 由于会报错 所以有人告诉我这样一个方式 但是只能从error中获取值

  1. $.ajax({
  1. "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. });

上传的方式,

1.可以通过form表单的方式进行

2.ajax上传(将图片转化为Base64编码)

Demo 的HTML结构

  1. <form action="http://172.16.105.43:8080/vcard/imageCut" enctype="multipart/form-data" method="post" id="form">
  2. <div class="pic">
  3. <a href="javascript:void(0)" class="add"><input type="file" name="file" id="imgUpload"/></a>
  4. <div class="mask_box">
  5. <div class="container">
  6. <img id="img" src="img/add-pic.png">
  7. </div>
  8. <input type="hidden" name="x" id="x" value="0"/>
  9. <input type="hidden" name="y" id="y" value="0"/>
  10. <input type="hidden" name="w" id="w" value="720"/>
  11. <input type="hidden" name="h" id="h" value="425"/>
  12. <div class="btn_submit"><span onclick="cancel()" >取消</span><span class="right" onclick="upload()">完成</span></div>
  13. </div>
  14. </div>
  15. </form>

关于利用表单提交 裁剪以后的图片base64码,链接戳这里

cropper.js图片裁剪的更多相关文章

  1. 开源JS图片裁剪插件

    开源JS图片裁剪插件 一.总结 一句话总结: 要用点赞最高的插件,这样适用性最好,效果最好,出问题的概率也最低,这里电脑端和手机端都可以用的建议用 cropper.js 二.5款好用的开源JS图片裁剪 ...

  2. 图片裁剪的js有哪些(整理)

    图片裁剪的js有哪些(整理) 一.总结 一句话总结:如果用了amaze框架就去amaze框架的插件库里面找图片裁剪插件,如果没用,jcrop和cropper都不错. 1.amazeui的插件库中有很多 ...

  3. node.js平台下,cropper.js实现图片裁剪预览并转换为base64发送至服务端。

    一 .准备工作 1.首先需要先下载cropper,常规使用npm,进入项目路径后执行以下命令: npm install cropper 2. cropper基于jquery,在此不要忘记引入jq,同时 ...

  4. cropper.js实现图片裁剪预览并转换为base64发送至服务端。

    一 .准备工作 1.首先需要先下载cropper,常规使用npm,进入项目路径后执行以下命令: npm install cropper 2. cropper基于jquery,在此不要忘记引入jq,同时 ...

  5. Vue中使用Cropper.js裁剪图片

    Cropper.js是一款很好用的图片裁剪工具,可以对图片的尺寸.宽高比进行裁剪,满足诸如裁剪头像上传.商品图片编辑之类的需求. github: https://github.com/fengyuan ...

  6. 图片裁剪 cropper.js 上传组件封装 vue

    //HTML cropper.js 文档地址: https://github.com/fengyuanchen/cropperjs/blob/master/README.md <template ...

  7. cropper.js 超级好用的裁剪图片工具

    最近要做一个照片裁剪功能.就选用了cropper.js 代码如下:贴出来 <div class="container"> <div class="row ...

  8. cropper.js裁剪图片的使用

    这两天难得有时间可以整理一下最近学习的东西,这两天项目中用到了头像上传裁剪的功能,这里只介绍头像的裁剪吧. 单独实现图片剪裁的功能还是挺容易的,入门级别的.看一遍官方给的文档,基本上就明白了.大家如果 ...

  9. js插件---强大的图片裁剪Cropper

    js插件---强大的图片裁剪Cropper 一.总结 一句话总结:官网或者github里面的文档或者demo才是真的详细 使用的话找到图片裁剪后的base64数据,然后这个数据可下载可传递到服务器 1 ...

随机推荐

  1. ansible结合zabbix_api批量添加主机

    批量添加zabbix监控 .使用ansible配置zabbix客户端 ①修改服务器的IP(域名),为了方便使用ansible来批量操作 等同于如下sed语句 sed -i 's#Server=1.1. ...

  2. T-SQL 日期函数

    GETDATE() 它将返回当前日期和时间. 语法 上述函数的语法: GETDATE() 例 以下查询将返回当前日期以及MS SQL Server中的时间. Select getdate() as c ...

  3. Linux i2c 读写程序

    /* This software uses a BSD license. Copyright (c) 2010, Sean Cross / chumby industriesAll rights re ...

  4. 19)django-cookie使用

    Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份.进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密) 一:cookie cookie在客户端浏览器的是以 ...

  5. PID控制器开发笔记之一:PID算法原理及基本实现

    在自动控制中,PID及其衍生出来的算法是应用最广的算法之一.各个做自动控制的厂家基本都有会实现这一经典算法.我们在做项目的过程中,也时常会遇到类似的需求,所以就想实现这一算法以适用于更多的应用场景. ...

  6. Confluence 6 启用 HTTP 压缩

    在屏幕的右上角单击 控制台按钮 ,然后选择 基本配置(General Configuration) 链接. 在左侧的面板中选择 通用配置(General Configuration). 启用 HTTP ...

  7. Confluence 6 PostgreSQL 问题解决

    如果 Confluence 提示没有 class 文件,你可能将你的 JDBC 驱动放置到了错误的文件夹. 如果你不能从你从 Confluence 中连接到 PostgreSQL ,并且这 2 个服务 ...

  8. ionic3 调用摄像头 当键盘弹出时候 出现摄像头 背景

    iOS 端毫无 bug,Android 端却出现了问题.当软键盘弹出后,Android 端的 tabs 移到了软键盘的上面,再仔细一看,整个界面都被压扁了,输入框也不知道去哪儿了. 于是去翻 Ioni ...

  9. Java并发编程基础-ReentrantLock的机制

    同步锁: 我们知道,锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源,在Lock接口出现之前,Java应用程序只能依靠synchronized关键字来实现同步锁 ...

  10. SQLmap注入启发式检测算法

    1.经过setTargetEnv()就进入了checkWaf()的环节 def checkWaf():     """     Reference: http://sec ...