加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

JCrop与ajaxfileupload整合的用法(java版本)

发布时间:2020-12-15 20:57:30 所属栏目:百科 来源:网络整理
导读:JCrop官方下载地址:http://deepliquid.com/content/Jcrop.html 前两天项目中需要用到上传头像的功能,偶然找到了jcrop,虽然是一款javascript插件,但是显示效果堪比flash。 与ajaxfileupload整合后特别好用。 下面是源码: 1、引用代码区: link href="css

JCrop官方下载地址:http://deepliquid.com/content/Jcrop.html


前两天项目中需要用到上传头像的功能,偶然找到了jcrop,虽然是一款javascript插件,但是显示效果堪比flash。

与ajaxfileupload整合后特别好用。


下面是源码:

1、引用代码区:

<link href="css/jquery.Jcrop.min.css" type="text/css" rel="stylesheet" />
<script src="js/jquery-1.6.4.min.js" type="text/javascript"></script>
<script type="text/javascript" src="js/axfileupload.js"></script>
<script type="text/javascript" src="js/Jcrop/jquery.color.js"></script>
<script type="text/javascript" src="js/Jcrop/jquery.Jcrop.min.js"></script>

2、页面:

<div class="face_right">
<div class="upload">
<form action="cut_face" method="post">
<div>
<p style="font-size: 15px">
设置新头像
</p>
<p>
1.使用真实照片,展示自我风采,可以在大照片中裁剪满意的部分。
</p>
<p>
2.支持jpg、gif、png和bmp格式图片。
</p>
<p>
3.最大支持10M图片。
</p>
</div>
<div class="picture">
<input type="file" id="fn"
style="opacity: 0; width: 70px; position: absolute; filter: alpha(opacity = 0);"
onchange="select_img();" />
<a class="btnl" style="color: #FFFFFF; cursor: pointer;">选择图片</a>
</div>
<div class="background" id="back_ground">

</div>

<input type="hidden" id="image_name" name="image_name" />

<input type="hidden" id="x" name="x" value="" /><!--四个值分别用来存储截取的四个位置-->
<input type="hidden" id="y" name="y" value="" />
<input type="hidden" id="x2" name="x2" value="" />
<input type="hidden" id="y2" name="y2" value="" />
<div class="upload_button">
<input type="submit"
style="display: none; padding: 3px; cursor: pointer;"
class="btnl" value="保存" />
</div>
</form>
</div>
</div>
</div>

3、js代码:

<script>


function select_img() {
var value = $("#fn").val();
var ext = value.substring(value.lastIndexOf(".") + 1).toLowerCase();
if (ext == null
|| ext == ""
|| (ext != "jpg" && ext != "gif" && ext != "bmp" && ext != "jpeg" && ext != "png")) {
art.dialog( {
title : '提示',
icon : 'error',
content : '不支持的照片格式'
}).lock().time(3);
return;
}
$("#back_ground").html(
"<img src='<%=img%>loading.gif' style='margin-top:100px;'/>");
$.ajaxFileUpload( {
url : "upload_user_head",
secureuri : false,
dataType : 'json',
type : "post",
fileElementId : "fn",
success : function(data,status) {
$("#back_ground")
.html(
"<img id='target' src='<%=facePath%>1/" + data.img
+ "' />").css( {
"background" : "#FFFFFF"
});
$("#image_name").val(data.img);
$(".btnl").show();
adjustwh();
do_Jcrop();
}
})
}

function adjustwh() {
var image = new Image();
image.src = $("#target").attr('src');
var true_width = image.width;
var true_height = image.height;
if (true_width / true_height > 16 / 9) {
$("#target").css( {
"width" : "400"
});
$("#zoom_rate").val(400 / true_width);
} else {
$("#target").css( {
"height" : "249"
});
$("#zoom_rate").val(249 / true_height);
}
}

function do_Jcrop() {
var api;
$('#target').Jcrop( {
// start off with jcrop-light class
bgOpacity : 0.5,
bgColor : 'white',
aspectRatio : 1,
addClass : 'jcrop-light',
onChange : showCoords,
onSelect : showCoords
},function() {
api = this;
api.setSelect( [ 130,65,130 + 350,65 + 285 ]);
api.setOptions( {
bgFade : true
});
api.ui.selection.addClass('jcrop-selection');
});

$('#buttonbar')
.on(
'click',
'button',
function(e) {
var $t = $(this),$g = $t.closest('.btn-group');
$g.find('button.active').removeClass('active');
$t.addClass('active');
$g
.find('[data-setclass]')
.each(
function() {
var $th = $(this),c = $th
.data('setclass'),a = $th
.hasClass('active');
if (a) {
api.ui.holder.addClass(c);
switch (c) {

case 'jcrop-light':
api.setOptions( {
bgColor : 'white',
bgOpacity : 0.5
});
break;

case 'jcrop-dark':
api.setOptions( {
bgColor : 'black',
bgOpacity : 0.4
});
break;

case 'jcrop-normal':
api
.setOptions( {
bgColor : $.Jcrop.defaults.bgColor,
bgOpacity : $.Jcrop.defaults.bgOpacity
});
break;
}
} else
api.ui.holder.removeClass(c);
});
});

}
function showCoords(c) {
jQuery('#x').val(c.x);
jQuery('#y').val(c.y);
jQuery('#x2').val(c.x2);
jQuery('#y2').val(c.y2);
};

</script>

5、后台两段代码:

@RequestMapping(value="upload_user_head") public void uploadUserHead(MultipartHttpServletRequest multipartRequest,HttpSession session,HttpServletRequest request,ModelMap map,HttpServletResponse response) throws IOException{ response.setCharacterEncoding("UTF-8"); response.setContentType("text/plain"); PrintWriter out = response.getWriter(); MultipartFile file = multipartRequest.getFile("fn"); if (file == null) { out.write("0"); }else{ if(file.getSize()>10000000) { out.write("1"); }else if(file.getSize()>0){ String filename=file.getOriginalFilename(); String imgUrl= SaveFileFromInputStream(file.getInputStream(),filename,request,0); out.write("{"img":""+imgUrl+""}"); } } out.flush(); out.close(); } @RequestMapping(value="/cut_face") public String cut_face(HttpServletRequest request,HttpServletResponse response,HttpSession session){ TbUser user = (TbUser) session.getAttribute("user"); try{ String image_name = request.getParameter("image_name"); int x = Integer.parseInt(request.getParameter("x")); int y = Integer.parseInt(request.getParameter("y")); int x2 = Integer.parseInt(request.getParameter("x2")); int y2 = Integer.parseInt(request.getParameter("y2")); // System.out.println(x+","+y+","+x2+","+y2+","+","+image_name); ImageCutUtil.cutImageByXY(FileStorage.getDocumentItemStorage(request)+separator+"1"+separator+image_name,FileStorage.getDocumentItemStorage(request)+separator+"0"+separator+image_name,x,y,x2,y2,120,120); user.setHeadurl(image_name); userDao.attachDirty(user); }catch(Exception e){ } return "redirect:/my_face"; }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读