SpringMVC结合Jcrop实现图片裁剪

发布时间 - 2026-01-10 22:13:55    点击率:

本文实例为大家分享了SpringMVC结合Jcrop实现图片裁剪的具体代码,供大家参考,具体内容如下

一、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
      });

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# SpringMVC  # Jcrop  # 图片裁剪  # JQuery Jcrop 实现图片裁剪的插件  # jquery实现图片裁剪思路及实现  # PHP图片裁剪函数(保持图像不变形)  # js+jquery实现图片裁剪功能  # 基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛  # SNS)  # 使用JavaScript+canvas实现图片裁剪  # 使用gd库实现php服务端图片裁剪和生成缩略图功能分享  # c#利用Grahics进行图片裁剪  # c#图片处理之图片裁剪成不规则图形  # javascript 图片裁剪技巧解读  # 两种  # 大家分享  # 具体内容  # 大家多多  # 上传  # script  # javascript  # uploadPlugin  # css  # jquery  # js  # api  # scripts  # resources  # onclick 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何确保西部建站助手FTP传输的安全性?  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  如何在搬瓦工VPS快速搭建网站?  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  手机网站制作与建设方案,手机网站如何建设?  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  香港服务器部署网站为何提示未备案?  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  油猴 教程,油猴搜脚本为什么会网页无法显示?  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  什么是javascript作用域_全局和局部作用域有什么区别?  历史网站制作软件,华为如何找回被删除的网站?  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  bootstrap日历插件datetimepicker使用方法  Laravel Session怎么存储_Laravel Session驱动配置详解  Laravel如何实现API资源集合?(Resource Collection教程)  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  Python制作简易注册登录系统  Android使用GridView实现日历的简单功能  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  Laravel怎么判断请求类型_Laravel Request isMethod用法  Laravel如何使用Service Container和依赖注入?(代码示例)  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  如何在Windows 2008云服务器安全搭建网站?  使用豆包 AI 辅助进行简单网页 HTML 结构设计  Laravel怎么实现模型属性的自动加密  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  如何快速生成橙子建站落地页链接?  如何在建站主机中优化服务器配置?  javascript基本数据类型及类型检测常用方法小结  网站制作壁纸教程视频,电脑壁纸网站?  如何在IIS7上新建站点并设置安全权限?  Laravel如何使用Livewire构建动态组件?(入门代码)  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  Laravel如何实现用户注册和登录?(Auth脚手架指南)  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  ,南京靠谱的征婚网站?  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】