SpringMVC结合Jcrop实现图片裁剪
本文实例为大家分享了SpringMVC结合Jcrop实现图片裁剪的具体代码,供大家参考,具体内容如下
一、jsp页面:
<formname="form"action="<%=request.getContextPath()%>/UploadDemo/uploadHeadImage"class="form-horizontal" method="post"enctype="multipart/form-data"> <divclass="modal-bodytext-center"> <divclass="zxx_main_con"> <divclass="zxx_test_list"> <inputclass="photo-file"type="file"name="imgFile"id="fcupload"onchange="readURL(this);"/> <imgalt=""src=""id="cutimg"/> <inputtype="hidden"id="x"name="x"/> <inputtype="hidden"id="y"name="y"/> <inputtype="hidden"id="w"name="w"/> <inputtype="hidden"id="h"name="h"/> </div> </div> </div> <divclass="modal-footer"> <buttonid="submit"onclick="">上传</button> </div> </form>
二、jcrop组件引用情况:
<linkrel="stylesheet"href="<c:urlvalue="/resources/uploadPlugin/css/jquery.Jcrop.css"/>"type="text/css"></link> <scripttype="text/javascript"src="<c:urlvalue="/resources/uploadPlugin/scripts/jquery-1.8.3.js"/>"></script> <scripttype="text/javascript"src="<c:urlvalue="/resources/uploadPlugin/scripts/jquery.Jcrop.js"/>"></script>
三、jcrop使用方法
<scripttype="text/javascript"> //定义一个全局api,这样操作起来比较灵活 varapi=null; functionreadURL(input){ if(input.files&&input.files[0]){ varreader=newFileReader(); reader.readAsDataURL(input.files[0]); reader.onload=function(e){ $('#cutimg').removeAttr('src'); $('#cutimg').attr('src',e.target.result); api=$.Jcrop('#cutimg',{ setSelect:[20,20,200,200], aspectRatio:1, onSelect:updateCoords }); }; if(api!=undefined){ api.destroy(); } } functionupdateCoords(obj){ $("#x").val(obj.x); $("#y").val(obj.y); $("#w").val(obj.w); $("#h").val(obj.h); }; } </script>
四、后台代码:
@RequestMapping(value="/uploadHeadImage") publicStringuploadHeadImage( HttpServletRequestrequest, @RequestParam(value="x")Stringx, @RequestParam(value="y")Stringy, @RequestParam(value="h")Stringh, @RequestParam(value="w")Stringw, @RequestParam(value="imgFile")MultipartFileimageFile )throwsException{ System.out.println("==========Start============="); StringrealPath=request.getSession().getServletContext().getRealPath("/"); StringresourcePath="resources/uploadImages/"; if(imageFile!=null){ if(FileUploadUtil.allowUpload(imageFile.getContentType())){ StringfileName=FileUploadUtil.rename(imageFile.getOriginalFilename()); intend=fileName.lastIndexOf("."); StringsaveName=fileName.substring(0,end); Filedir=newFile(realPath+resourcePath); if(!dir.exists()){ dir.mkdirs(); } Filefile=newFile(dir,saveName+"_src.jpg"); imageFile.transferTo(file); StringsrcImagePath=realPath+resourcePath+saveName; intimageX=Integer.parseInt(x); intimageY=Integer.parseInt(y); intimageH=Integer.parseInt(h); intimageW=Integer.parseInt(w); //这里开始截取操作 System.out.println("==========imageCutStart============="); ImageCut.imgCut(srcImagePath,imageX,imageY,imageW,imageH); System.out.println("==========imageCutEnd============="); } } return"user/uploadImg/test"; }
五、ImageCut.java工具类:
/** *截取图片 *@paramsrcImageFile原图片地址 *@paramx截取时的x坐标 *@paramy截取时的y坐标 *@paramdesWidth截取的宽度 *@paramdesHeight截取的高度 */ publicstaticvoidimgCut(StringsrcImageFile,intx,inty,intdesWidth, intdesHeight){ try{ Imageimg; ImageFiltercropFilter; BufferedImagebi=ImageIO.read(newFile(srcImageFile+"_src.jpg")); intsrcWidth=bi.getWidth(); intsrcHeight=bi.getHeight(); if(srcWidth>=desWidth&&srcHeight>=desHeight){ Imageimage=bi.getScaledInstance(srcWidth,srcHeight,Image.SCALE_DEFAULT); cropFilter=newCropImageFilter(x,y,desWidth,desHeight); img=Toolkit.getDefaultToolkit().createImage( newFilteredImageSource(image.getSource(),cropFilter)); BufferedImagetag=newBufferedImage(desWidth,desHeight, BufferedImage.TYPE_INT_RGB); Graphicsg=tag.getGraphics(); g.drawImage(img,0,0,null); g.dispose(); //输出文件 ImageIO.write(tag,"JPEG",newFile(srcImageFile+"_cut.jpg")); } }catch(Exceptione){ e.printStackTrace(); } }
六、jcrop的两种使用方式:
1、
jQuery('#cropbox').Jcrop({ onChange:showCoords, onSelect:showCoords });
2、
varapi=$.Jcrop('#cropbox',{ onChange:showPreview, onSelect:showPreview, aspectRatio:1 });
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。