html5头像裁剪实例,使用cropper.js裁剪头像的实例代码
最近项目需要头像裁剪的功能,在网上找了一下,发现了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;
});
});
1小时搞定cropper.js制作头像/图片上传.裁剪.并发送至后端 先给大家看一下最终效果. 大多数功能都是由Cropper.js封装好的,调整并制作了: 上传图片 对图片的裁剪以及调整(旋转.缩放 ... 官网http://fengyuanchen.github.io/cropper/ 文档https://github.com/fengyuanchen/cropper/blob/master/READM ... js截取图片 裁剪图片之cropper.js插件用法详解 源码:https://github.com/fengyuanchen/cropper 引入+使用 <link href="/p ... 准备开发个头像上传及剪裁功能 想象的比较简单 没想到做起来这么费时间 – – 逻辑也要比我想象的多 下面简单说一下前后端的实现! 前端:主要是用JS 这里如果想偷懒的话推荐两个JQ jcrop和jsc ... cropper.js 实现HTML5 裁剪图片并上传(裁剪上传头像.) option相关参数说明: viewMode 显示模式 Type: Number Default: 0 Options: 0: ... <template><div class="user-profile"><input type="file" name=" ... 博客地址:http://blog.mambaxin.com 由于之前做项目的时候有需求是需要实现裁剪图片来做头像并上传到服务器,所以上网查询了很多资料,也试用了许多案例,发现cropper插件裁剪是比 ... 一.图片上传 (1)使用 <input type="file" accept="image/*" name="file" @chang ... 1.安装 npm install cropperjs 2.在main.js引入cropper的css样式(一定要加,一定要加,一定要加) import 'cropperjs/dist/cropper. ...html5头像裁剪实例,使用cropper.js裁剪头像的实例代码相关推荐
最新文章
热门文章