SpringMVC結(jié)合Jcrop實現(xiàn)圖片裁剪
更新時間:2016年12月30日 16:31:53 作者:繁華穿越現(xiàn)實
這篇文章主要介紹了SpringMVC結(jié)合Jcrop實現(xiàn)圖片裁剪的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了SpringMVC結(jié)合Jcrop實現(xiàn)圖片裁剪的具體代碼,供大家參考,具體內(nèi)容如下
一、jsp頁面:
<form name="form" action="<%=request.getContextPath()%>/UploadDemo/uploadHeadImage" class="form-horizontal" method="post" enctype="multipart/form-data"> <div class="modal-body text-center"> <div class="zxx_main_con"> <div class="zxx_test_list"> <input class="photo-file" type="file" name="imgFile" id="fcupload" onchange="readURL(this);"/> <img alt="" src="" id="cutimg"/> <input type="hidden" id="x" name="x"/> <input type="hidden" id="y" name="y"/> <input type="hidden" id="w" name="w"/> <input type="hidden" id="h" name="h"/> </div> </div> </div> <div class="modal-footer"> <button id="submit" onclick="">上傳</button> </div> </form>
二、jcrop組件引用情況:
<link rel="stylesheet" href="<c:url value="/resources/uploadPlugin/css/jquery.Jcrop.css"/>" type="text/css"></link> <script type="text/javascript" src="<c:url value="/resources/uploadPlugin/scripts/jquery-1.8.3.js"/>"></script> <script type="text/javascript" src="<c:url value="/resources/uploadPlugin/scripts/jquery.Jcrop.js"/>"></script>
三、jcrop使用方法
<script type="text/javascript"> //定義一個全局api,這樣操作起來比較靈活 var api = null; function readURL(input) { if (input.files && input.files[0]) { var reader = new FileReader(); 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(); } } function updateCoords(obj) { $("#x").val(obj.x); $("#y").val(obj.y); $("#w").val(obj.w); $("#h").val(obj.h); }; } </script>
四、后臺代碼:
@RequestMapping(value = "/uploadHeadImage") public String uploadHeadImage( HttpServletRequest request, @RequestParam(value = "x") String x, @RequestParam(value = "y") String y, @RequestParam(value = "h") String h, @RequestParam(value = "w") String w, @RequestParam(value = "imgFile") MultipartFile imageFile ) throws Exception{ System.out.println("==========Start============="); String realPath = request.getSession().getServletContext().getRealPath("/"); String resourcePath = "resources/uploadImages/"; if(imageFile!=null){ if(FileUploadUtil.allowUpload(imageFile.getContentType())){ String fileName = FileUploadUtil.rename(imageFile.getOriginalFilename()); int end = fileName.lastIndexOf("."); String saveName = fileName.substring(0,end); File dir = new File(realPath + resourcePath); if(!dir.exists()){ dir.mkdirs(); } File file = new File(dir,saveName+"_src.jpg"); imageFile.transferTo(file); String srcImagePath = realPath + resourcePath + saveName; int imageX = Integer.parseInt(x); int imageY = Integer.parseInt(y); int imageH = Integer.parseInt(h); int imageW = Integer.parseInt(w); //這里開始截取操作 System.out.println("==========imageCutStart============="); ImageCut.imgCut(srcImagePath,imageX,imageY,imageW,imageH); System.out.println("==========imageCutEnd============="); } } return "user/uploadImg/test"; }
五、ImageCut.java工具類:
/** * 截取圖片 * @param srcImageFile 原圖片地址 * @param x 截取時的x坐標 * @param y 截取時的y坐標 * @param desWidth 截取的寬度 * @param desHeight 截取的高度 */ public static void imgCut(String srcImageFile, int x, int y, int desWidth, int desHeight) { try { Image img; ImageFilter cropFilter; BufferedImage bi = ImageIO.read(new File(srcImageFile+"_src.jpg")); int srcWidth = bi.getWidth(); int srcHeight = bi.getHeight(); if (srcWidth >= desWidth && srcHeight >= desHeight) { Image image = bi.getScaledInstance(srcWidth, srcHeight,Image.SCALE_DEFAULT); cropFilter = new CropImageFilter(x, y, desWidth, desHeight); img = Toolkit.getDefaultToolkit().createImage( new FilteredImageSource(image.getSource(), cropFilter)); BufferedImage tag = new BufferedImage(desWidth, desHeight, BufferedImage.TYPE_INT_RGB); Graphics g = tag.getGraphics(); g.drawImage(img, 0, 0, null); g.dispose(); //輸出文件 ImageIO.write(tag, "JPEG", new File(srcImageFile+"_cut.jpg")); } } catch (Exception e) { e.printStackTrace(); } }
六、jcrop的兩種使用方式:
1、
jQuery('#cropbox').Jcrop({ onChange: showCoords, onSelect: showCoords });
2、
var api = $.Jcrop('#cropbox',{ onChange: showPreview, onSelect: showPreview, aspectRatio: 1 });
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章

SpringBoot測試配置屬性與web啟動環(huán)境超詳細圖解
Web開發(fā)的核心內(nèi)容主要包括內(nèi)嵌的Servlet容器和SpringMVCSpringBoot使用起來非常簡潔,大部分配置都有SpringBoot自動裝配,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
2022-10-10 
淺談Java中OutOfMemoryError問題產(chǎn)生原因
本文主要介紹了淺談Java中OutOfMemoryError問題產(chǎn)生原因,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
2023-06-06 
springboot做代理分發(fā)服務+代理鑒權(quán)的實現(xiàn)過程
這篇文章主要介紹了springboot做代理分發(fā)服務+代理鑒權(quán)的實現(xiàn)過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
2021-01-01