本文实例为大家分享了SpringMVC结合Jcrop实现图片裁剪的具体代码,供大家参考,具体内容如下
一、jsp页面:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
< 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组件引用情况:
1
2
3
|
< 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使用方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<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> |
四、后台代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
@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工具类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/** * 截取图片 * @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、
1
2
3
4
|
jQuery( '#cropbox' ).Jcrop({ onChange: showCoords, onSelect: showCoords }); |
2、
1
2
3
4
5
|
var api = $.Jcrop( '#cropbox' ,{ onChange: showPreview, onSelect: showPreview, aspectRatio: 1 }); |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。