Java 利用jquery库cropper完成图片裁剪功能,经测试可用!

[javascript]  view plain  copy
  1. 一、导入 image cropper js和css样式  
  2.   <link rel="stylesheet" href="${pageContext.request.contextPath}/css/imageCropper/assets/css/font-awesome.min.css">  
  3.   <link rel="stylesheet" href="${pageContext.request.contextPath}/css/imageCropper/assets/css/bootstrap.min.css">  
  4.   <link rel="stylesheet" href="${pageContext.request.contextPath}/css/imageCropper/dist/cropper.css">  
  5.   <link rel="stylesheet" href="${pageContext.request.contextPath}/css/imageCropper/main.css">  
  6.   <script src="${pageContext.request.contextPath }/js/imageCropper/assets/js/jquery.min.js"></script>  
  7.   <script src="${pageContext.request.contextPath }/js/imageCropper/assets/js/bootstrap.min.js"></script>  
  8.   <script src="${pageContext.request.contextPath }/js/imageCropper/dist/cropper.js"></script>  
  9.   <script src="${pageContext.request.contextPath }/js/imageCropper/main.js"></script>  
  10.   
  11. 二、截取图片,创建canvas,上传到后台  
  12. function getImg(){  
  13.       
  14.   
  15.   
  16.      var $this = $("#getCroppedCanvasDefined");  
  17.      var $image = $('#image');  
  18.      var data = $this.data();  
  19.       if ($image.data('cropper')) {  
  20.           data = $.extend({}, data); // Clone a new one  
  21.   
  22.           if (typeof data.target !== 'undefined') {  
  23.             $target = $(data.target);  
  24.   
  25.             if (typeof data.option === 'undefined') {  
  26.               try {  
  27.                 data.option = JSON.parse($target.val());  
  28.               } catch (e) {  
  29.                 console.log(e.message);  
  30.               }  
  31.             }  
  32.           }  
  33.       }    
  34.   
  35.     var result=$image.cropper("getCroppedCanvas", data.option, data.secondOption);  
  36.      $('#getCroppedCanvasModal').find('.modal-body').html(result);  
  37.     var canvas= $("canvas")[0];//拿到剪裁后的数据  
  38.     var data=canvas.toDataURL(); //转成base64  
  39.     console.info(data)  
  40.      $.ajax( {  
  41.             url:'${pageContext.request.contextPath}/testEditor/testImageCropper.action',  
  42.             dataType:'json',  
  43.             type: "POST",  
  44.             data: {"image":data.toString()},  
  45.             success: function () {  
  46.               console.log('Upload success');  
  47.             },  
  48.             error: function () {  
  49.               console.log('Upload error');  
  50.             }  
  51.           });  
  52.       
  53.       
  54.       
  55. }  
[java]  view plain  copy
  1. 三、上传到后台,存储到对应的路径  
  2.   
  3. @RequestMapping(value = "testImageCropper"+ISystemConstant.SUFFIX_ACTION,method=RequestMethod.POST,   
  4.             consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)  
  5.     @ResponseBody  
  6.     public Map<String,Object> testImageCropper(Model model, HttpServletRequest request,HttpServletResponse response){  
  7.           
  8.          Map<String,Object> result=new HashMap<String,Object>();  
  9.         String filePath=pubParamService.getRootPath()+File.separator+"imageCropper"+File.separator;  
  10.         String fileName=UUID.randomUUID().toString()+".png";  
  11.            // 参数序列化  
  12.         String image = request.getParameter("image");   //拿到字符串格式的图片  
  13.         String PicName=fileName;  
  14.         System.out.println(PicName);  
  15.   
  16.         // 只允许image  
  17.         String header ="data:image";  
  18.         String[] imageArr=image.split(",");  
  19.         if(imageArr[0].contains(header)){//是img的  
  20.       
  21.       // 去掉头部  
  22.         image=imageArr[1];  
  23.         //image = image.substring(header.length());  
  24.         // 写入磁盘  
  25.         String success = "fail";  
  26.         BASE64Decoder decoder = new BASE64Decoder();  
  27.         try{  
  28.                 byte[] decodedBytes = decoder.decodeBuffer(image);        //将字符串格式的image转为二进制流(biye[])的decodedBytes  
  29.                 String imgFilePath =filePath+PicName;                        //指定图片要存放的位置  
  30.                 File targetFile = new File(filePath);  
  31.                 if(!targetFile.exists()){    
  32.                     targetFile.mkdirs();    
  33.                 }    
  34.                   
  35.                 FileOutputStream out = new FileOutputStream(imgFilePath);        //新建一个文件输出器,并为它指定输出位置imgFilePath  
  36.                 out.write(decodedBytes); //利用文件输出器将二进制格式decodedBytes输出  
  37.                 out.close();                        //关闭文件输出器  
  38.                 success = "上传文件成功!";  
  39.                 result.put("success", success);  
  40.                 System.out.println("上传文件成功!");  
  41.           
  42.         }catch(Exception e){  
  43.                 result.put("err", e.getMessage());  
  44.         }  
  45.           
  46.         }  
  47.         return result;  
  48.     }    
  49.       
  50.       

四、注意要是传递图片的小大大于2m,可能会出现数据传递不到后台的情况,这个时候请修改tomcat 的server.xml配置,增加maxPostSize=“0”,因为tomcat设置默认的传递的数据大小不能大于2m



https://github.com/fengyuanchen/cropper:image cropper  插件地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值