最近项目需要头像裁剪的功能,在网上找了一下,发现了github上的cropper项目还不错,借鉴了一下。。用起来挺简单的,下面是我做的一个小例子:

开始先放个成品图:

下面给出前后端的代码

前端页面是一个单独的jsp页面,用来做弹出层来裁剪图片比较好。

关于jsp页面引用的两个关于cropper的 文件,我就不提供了。大家需要的可以去官方的github上去下载。

pageEncoding="UTF-8"%>

Insert title here

.container {

max-width: 640px;

margin: 20px auto;

}

img {

max-width: 100%;

}

#result img{

max-width: 200px;

max-height: 200px;

}

.cropper-view-box,

.cropper-face {

border-radius: 50%;

}

function getSize(size){

var num=parseInt(size);

if(num<=300){//先要求图片的大小小于300之间

return num;

}

return getSize(num/2);

}

function getRoundedCanvas(sourceCanvas) {

var canvas = document.createElement('canvas');

var context = canvas.getContext('2d');

var width = sourceCanvas.width;

var height = sourceCanvas.height;

width=getSize(width);

height=width;

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(){

var $image = $('#image');

var $button = $('#button');

var $result = $('#result');

var croppable = false;

$image.cropper({

aspectRatio: 1,

viewMode: 1,

ready: function () {

croppable = true;

}

});

$button.on('click', function () {

var croppedCanvas;

var roundedCanvas;

if (!croppable) {

return;

}

// 裁剪

croppedCanvas = $image.cropper('getCroppedCanvas');

//判断图片大小,如果超过1080 则返回

if(croppedCanvas.width>1080){

alert("图片过大,请重新选择!");

return false;

}

// 生成圆形

roundedCanvas = getRoundedCanvas(croppedCanvas);

//将裁剪区域的图片转出图片的base64编码,放到表单里提交到后台。后台再对其进行解码,保存。

$("#icon").val(roundedCanvas.toDataURL());

$.ajax({

url:'${path }/front/saveUserIcon',

data:$("#submitForm").serialize(),

type:'POST',

success:function(data){

if(data.code==200){

parent.location.reload(); // 父页面刷新

var index = parent.layer.getFrameIndex(window.name); //获取窗口索引

parent.layer.close(index);

}else{

warningAlert(data.msg);

}

}

});

return false;

});

//当选择完图片后,直接提交表单到后台,图片保存后再回到此页面。这样此页面的图片裁剪画布就改变成你所选择的图片了

$("#file").change(function(){

var fileName=$("#file").val();

fileName=fileName.toLowerCase();

if((fileName.indexOf(".jpg")!=-1)||(fileName.indexOf(".png")!=-1)||(fileName.indexOf(".jpeg")!=-1)||(fileName.indexOf(".bmp")!=-1)||(fileName.indexOf(".gif")!=-1)){

$("#imageUploadForm").submit();

}else{

alert("所选图片格式错误或者不支持此类图片格式!");

}

return false;

});

});

html5头像裁剪实例,使用cropper.js裁剪头像的实例代码相关推荐

  1. 1小时搞定cropper.js制作头像/图片上传、裁剪、并发送至后端

    1小时搞定cropper.js制作头像/图片上传.裁剪.并发送至后端 先给大家看一下最终效果. 大多数功能都是由Cropper.js封装好的,调整并制作了: 上传图片 对图片的裁剪以及调整(旋转.缩放 ...

  2. cropper.js 裁剪图片并上传(文档翻译+demo)(转)

    官网http://fengyuanchen.github.io/cropper/ 文档https://github.com/fengyuanchen/cropper/blob/master/READM ...

  3. js截取图片 裁剪图片之cropper.js插件用法详解

    js截取图片 裁剪图片之cropper.js插件用法详解 源码:https://github.com/fengyuanchen/cropper 引入+使用 <link href="/p ...

  4. 圆角头像剪裁php,PHP与JS实现头像剪裁功能架构总结

    准备开发个头像上传及剪裁功能 想象的比较简单 没想到做起来这么费时间 – – 逻辑也要比我想象的多 下面简单说一下前后端的实现! 前端:主要是用JS 这里如果想偷懒的话推荐两个JQ jcrop和jsc ...

  5. cropper.js 实现HTML5 裁剪上传头像

    cropper.js 实现HTML5 裁剪图片并上传(裁剪上传头像.) option相关参数说明: viewMode 显示模式 Type: Number Default: 0 Options: 0: ...

  6. 头像上传和图片裁剪功能(cropper.js)

    <template><div class="user-profile"><input type="file" name=" ...

  7. cropper.js 实现裁剪图片并上传(PC端)

    博客地址:http://blog.mambaxin.com 由于之前做项目的时候有需求是需要实现裁剪图片来做头像并上传到服务器,所以上网查询了很多资料,也试用了许多案例,发现cropper插件裁剪是比 ...

  8. input file图片上传(使用OSS Javscrtipt 上传到服务器)以及图片裁剪(cropper.js)

    一.图片上传 (1)使用 <input type="file" accept="image/*" name="file" @chang ...

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

    1.安装 npm install cropperjs 2.在main.js引入cropper的css样式(一定要加,一定要加,一定要加) import 'cropperjs/dist/cropper. ...

最新文章

  1. 【建模必备】遗传算法的基本原理与步骤(选择)
  2. 2018-07-09--记录一次gitlab迁移事件及遇到的问题
  3. 聊一聊IAR的workspace文件组织
  4. SDWebImage源码阅读(三)UIImage+GIF
  5. 论文被拒稿后怎么办?这些事情你要知道
  6. Spring Boot——MyBatis配置带下划线命名的字段自动转换驼峰命名解决方案
  7. 全自动洗衣机单片机c语言程序,全自动洗衣机单片机程序
  8. 反向代理实现同域名下PHP和Java共存
  9. docker命令入门 - 夜的第一张
  10. hdu 1249 三角形 (递推)
  11. java封装 继承 多态 的概念和作用
  12. python选择题题库百度文库_(完整版)Python题库
  13. 教你怎么解决64位Windows版Redis狂占C盘的问题.
  14. Java实现快速查找(又名二分查找)
  15. 格式化报错a bad sector is being found while format this partition
  16. 2022数学建模美赛A题详细思路获取
  17. PROGRESSIVE GROWING OF GANS FOR IMPROVED QUALITY, STABILITY, AND VARIATION(PGGAN)
  18. 苹果 M1 单核性能勇超 Intel 11 代 i7;经纬张颖:用户增长与保护隐私不矛盾;阿里云盘正式公测 | EA周报
  19. 【BZOJ 1433】[ZJOI2009]假期的宿舍
  20. php论坛mybb,MyBB

热门文章

  1. Android模拟器快捷键
  2. c++ 全局变量初始化的一点总结
  3. tomcat 多实例启动脚本
  4. 修改新版am335x支持1G主频的方法[来自A Xian调试记录]
  5. 新建域用户添加提示密码策略受限
  6. php获取excel时间,详细介绍PHPExcel读取Excel时间的示例代码
  7. 效率 qt_Qt开发之Go篇(三)
  8. 公司内部将多国语言key转换成中文javaScript
  9. RabbitMQ (一)基础概念
  10. zblog php伪静态,ZBLOG PHP版本Apache和Nginx伪静态规则以及设置方法