spring-mvc整合jquery cropper图片裁剪插件
来源:互联网 发布:数据移植测试 编辑:程序博客网 时间:2024/06/07 05:07
spring-mvc整合jquery cropper图片裁剪插件
由于项目需要,最近两天都在研究sprigmvc整合jquery一款非常好用的图片裁剪插件---cropper。
在网上查找借鉴了一些资料,最终实现了效果。源代码下载地址: http://download.csdn.net/detail/u012759397/9679445
- - (1) cropper.jsp(以下代码所需js和css可以去github上下载cropper-master.rar):
<link rel="stylesheet" href="<%=path %>/resources/cropper/css/bootstrap.min.css"> <link rel="stylesheet" href="<%=path %>/resources/cropper/css/cropper.min.css"> <link rel="stylesheet" href="<%=path %>/resources/cropper/css/main.css"> <script src="<%=path %>/resources/cropper/js/jquery.min.js"></script> <script src="<%=path %>/resources/cropper/js/bootstrap.min.js"></script> <script src="<%=path %>/resources/cropper/js/cropper.min.js"></script> <script src="<%=path %>/resources/cropper/js/main.js"></script><body> <div class="container" id="crop-avatar"> <!-- Current avatar --> <div class="avatar-view" title="Change the avatar"> <img src="<%=path %>/resources/cropper/img/picture.jpg" alt="Avatar"> </div> <!-- Cropping modal --> <div class="modal fade" id="avatar-modal" aria-hidden="true" aria-labelledby="avatar-modal-label" role="dialog" tabindex="-1"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <form class="avatar-form" action="uploadHeadImage" enctype="multipart/form-data" method="post" accept="image/*"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h4 class="modal-title" id="avatar-modal-label">更改封面</h4> </div> <div class="modal-body"> <div class="avatar-body"> <div class="avatar-upload"> <input type="hidden" class="avatar-src" name="avatar_src"> <input type="hidden" class="avatar-data" name="avatar_data"> <label for="avatarInput" class="btn btn-primary">选择图片</label> <input type="file" class="avatar-input" id="avatarInput" name="avatar_file" style="display: none;" accept="image/*"> </div> <!-- Crop and preview --> <div class="row"> <div class="col-md-9"> <div class="avatar-wrapper"></div> </div> <div class="col-md-3"> <div class="avatar-preview preview-lg"></div> <div class="avatar-preview preview-md"></div> <div class="avatar-preview preview-sm"></div> </div> </div> <div class="row avatar-btns"> <div class="col-md-9"> <div class="btn-group"> <button type="button" class="btn btn-primary" data-method="rotate" data-option="90" title="Rotate 90 degrees">旋转图片</button> <button type="button" class="btn btn-primary" data-method="rotate" data-option="15">15deg</button> <button type="button" class="btn btn-primary" data-method="rotate" data-option="30">30deg</button> <button type="button" class="btn btn-primary" data-method="rotate" data-option="45">45deg</button> </div> </div> <div class="col-md-3"> <button type="submit" class="btn btn-primary btn-block avatar-save">提交</button> </div> </div> </div> </div> <!-- <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button> </div> --> </form> </div> </div> </div><!-- /.modal --> <!-- Loading state --> <div class="loading" aria-label="Loading" role="img" tabindex="-1"></div> </div></body>
- (2)后台UploadImgController.java
@Controller@RequestMapping("/UploadDemo")public class UploadImgController { @RequestMapping(value = "/uploadHeadImage",method = RequestMethod.GET) public String uploadCropper(){ return "cropper"; } @RequestMapping(value = "/uploadHeadImage",method = RequestMethod.POST, produces="text/html;charset=utf-8") @ResponseBody public String uploadCropper( @RequestParam(value = "avatar_file",required=false) MultipartFile avatar_file, String avatar_src,String avatar_data, HttpServletRequest request) { System.out.println("==========Start============="); String realPath = request.getSession().getServletContext().getRealPath("/"); String resourcePath = "/upload/image/"; //判断文件的MIMEtype String type = avatar_file.getContentType(); if(type==null || !FileUploadUtil.allowUpload(type)) return JSON.toJSONString(new Result(null,"不支持的文件类型,仅支持图片!")); System.out.println("file type:"+type); String fileName = FileUploadUtil.rename(avatar_file.getOriginalFilename()); int end = fileName.lastIndexOf("."); String saveName = fileName.substring(0,end); try { File dir = new File(realPath + resourcePath); if(!dir.exists()){ dir.mkdirs(); } File file = new File(dir,saveName+"_src.jpg"); avatar_file.transferTo(file); } catch (Exception e) { e.printStackTrace(); return JSON.toJSONString(new Result(null,"上传失败,出现异常:"+e.getMessage())); } String srcImagePath = realPath + resourcePath + saveName; JSONObject joData = (JSONObject) JSONObject.parse(avatar_data); // 用户经过剪辑后的图片的大小 float x = joData.getFloatValue("x"); float y = joData.getFloatValue("y"); float w = joData.getFloatValue("width"); float h = joData.getFloatValue("height"); float r = joData.getFloatValue("rotate"); //这里开始截取操作 System.out.println("==========imageCutStart============="); ImgCut.cutAndRotateImage(srcImagePath, (int)x,(int) y,(int) w,(int) h,(int) r); System.out.println("==========imageCutEnd============="); return JSON.toJSONString(new Result(request.getSession().getServletContext().getContextPath()+resourcePath+saveName+"_cut.jpg","上传成功!")); }}
- (3)以上代码运行,在提交图片的时候用火狐的FireBug查看上传已成功,并且裁剪后的图片也存放在了项目路径下,但是页面会报Failed to response.
经过多次检查,在main.js中发现了问题.
原因就是当我上传图片成功后,后台会返回一个json串,由以下可知:
data: data,dataType: ‘json’, 知道,之后就会执行 :
success: function (data) { _this.submitDone(data); }
submitDone: function (data) { console.log(data); if ($.isPlainObject(data) && data.state === 200) { if (data.result) { this.url = data.result; if (this.support.datauri || this.uploaded) { this.uploaded = false; this.cropDone(); } else { this.uploaded = true; this.$avatarSrc.val(this.url); this.startCropper(); } this.$avatarInput.val(''); } else if (data.message) { this.alert(data.message); } } else { this.alert('Failed to response'); } },
此时由以上js中的源代码可以知道问题就在此处.但是图片上传没问题,在项目路径下也可以找到裁剪后的图片,那么怎么会响应失败?百思不得其解。
又经过反复检查,最终用firebug调试,找出了问题。data.state === 200,没错就是这里的问题,在firebug下,返回的json串提示上传图片已经成功!但是并没有出现200 ok,于是我就把data.state === 200删除,在运行代码。没问题了。。。
- (4)代码运行效果展示
0 0
- spring-mvc整合jquery cropper图片裁剪插件
- 一个基于jQuery的图片裁剪插件:Cropper
- 利用Jquery的cropper插件实现拖动层动态头剪切(裁剪头像)图片
- 基于Jquery/cropper插件的使用。头像截切/裁剪图片。
- jQuery.cropper裁剪
- Image Cropper 裁剪图片
- vue移动端裁剪图片结合插件Cropper的使用
- vue移动端裁剪图片结合插件Cropper的使用
- Java 利用jquery库cropper完成图片裁剪功能
- jQuery图片裁剪插件
- cropper裁剪图片(一)
- cropper裁剪图片(二)
- 使用Jcrop插件裁剪图片并上传(Spring MVC)
- 简单功能强大的jQuery图片剪裁插件Image Cropper
- jquery插件图片裁剪jcrop
- cropper 图片裁剪,固定图片宽高
- Android第三方开源图片裁剪截取:cropper
- 微信小程序图片裁剪工具we-cropper
- openwrt添加usb storage支持
- WebStorm快捷键操作
- iOS 下APNS推送处理函数详解
- swift 搜索框(UISearchBar)实现简单的搜索功能(swift3)
- Android studio 使用Grandle进行分渠道打包
- spring-mvc整合jquery cropper图片裁剪插件
- C语言直接对数据加密解密
- Error:(142, 34) java: -source 1.6 中不支持 multi-catch 语句 (请使用 -source 7 或更高版本以启用 multi-catch 语句)
- 简单的动画
- Cobertura的使用
- Java:如何直接创建内部类对象
- Android.mk覆盖替换LOCAL_OVERRIDES_PACKAGES
- ALSM_EXCEL_TO_INTERNAL_TABLE 多sheet 操作
- C# int与string互相转换及数组转换