SpringMVC结合Jcrop实现图片裁剪

本文实例为大家分享了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
      });

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

(0)

相关推荐

  • 基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)

    正文:为了使层次分明及便于阅读,  整个解决方案如下: 其中BitmapCutter.Core是图片的服务器端处理程序, 类图为: 简单说明下, 更多说明可查看源码注释 : Cutter为裁剪对象, 用于存储客户端通过AJAX提交的数据. Helper为图片处理类, 包括图片翻转(RotateImage()), 图片裁剪(GenerateBitmap()). Callback为服务器端图片处理类, 通过使用Cutter封装客户端AJAX提交的数据, 然后调用Helper中的方法来完成图片处理.

  • JQuery Jcrop 实现图片裁剪的插件

    效果如下图请"运行代码"先试下运行,运行后请刷新一次,感受下: body{ margin:100px auto; text-align:center; } .jcrop-holder { text-align: left; } .jcrop-vline, .jcrop-hline{ font-size: 0; position: absolute; background: white url('http://img.jb51.net/jslib/images/Jcrop.gif') t

  • 使用gd库实现php服务端图片裁剪和生成缩略图功能分享

    裁剪示例: 最终裁剪成的图片: 其中虚线框内就是要裁剪出来的图片,最终保存成100宽的图片.代码如下: 复制代码 代码如下: $src_path = '1.jpg';//创建源图的实例$src = imagecreatefromstring(file_get_contents($src_path)); //裁剪开区域左上角的点的坐标$x = 100;$y = 12;//裁剪区域的宽和高$width = 200;$height = 200;//最终保存成图片的宽和高,和源要等比例,否则会变形$fi

  • jquery实现图片裁剪思路及实现

    思路:JS,jquery不能实现图片的裁剪,只是显示了一个假象 我的实现的方式大体如下: 1.将用户选中的图片上传到服务器 2.将选中头像的矩形框在图片上的坐标发送到服务器,包括,矩形框的宽,高,左上角的x,y坐标,图片的高,宽等 3.在服务器上用获得的各个坐标值,以及原始图片,用JAVA进行裁剪. ----------------------------------- jquery 裁剪效果显示,利用imgAreaSelect http://odyniec.net/projects/imgar

  • c#利用Grahics进行图片裁剪

    最开始用了 复制代码 代码如下: /// <summary>        /// 裁剪图片        /// </summary>        /// <param name="imagePath"/>        /// <param name="savePath">"c:\images\"</param>        private List<string>

  • PHP图片裁剪函数(保持图像不变形)

    为了完成图片上传之后自动的裁剪,然后在前台显示出裁剪出的图片.需求如上,源码如下: 复制代码 代码如下: <? *exif_imagetype -- 判断一个图像的类型 *说明:函数功能是把一个图像裁剪为任意大小的图像,图像不变形 * 参数说明:输入 需要处理图片的 文件名,生成新图片的保存文件名,生成新图片的宽,生成新图片的高 */ // 获得任意大小图像,不足地方拉伸,不产生变形,不留下空白         function my_image_resize($src_file, $dst_f

  • 使用JavaScript+canvas实现图片裁剪

    canvas是一个可以让我们使用脚本绘图的标签,它提供了一系列完整的属性和方法.我们可以借此来实现图形绘制,图像处理甚至实现简单的动画和游戏制作. canvas标签只有两个属性:width和height,用来设定画布的宽和高,如果没有通过标签属性或者脚本来设置,默认为300*150; 好了,canvas的介绍就先到这里,下面我们来看看javascript结合canvas实现图片的裁剪代码: 复制代码 代码如下: var selectObj = null; function ImageCrop(c

  • c#图片处理之图片裁剪成不规则图形

    为了让大家知道下面内容是否是自己想要的,我先发效果图. 好了,那就开始贴代码了 以下为一个按钮的事件,为裁剪准备图片.裁剪路径.保存路径 复制代码 代码如下: private void button1_Click(object sender, EventArgs e)        {            GraphicsPath path = new GraphicsPath();            Point[] p = {                            new

  • js+jquery实现图片裁剪功能

    现在我们在使用各大网站的个人中心时,都有个上传个人头像的功能.用户在上传了个人照片之后,可能不符合网站的要求,于是要求用户对照片进行裁剪,最终根据用户裁剪的尺寸生成头像.这个功能真是太棒了,原来不懂js的时候,感觉很神奇,太神奇了.心想哪天要是自己也能搞明白这里面的技术,那该多牛呀~大家是不是也有何我一样的想法呀~哈哈~~ 下面我们就来用javascript来实现这个功能吧. 复制代码 代码如下: <!DOCTYPE html> <html xmlns="http://www.

  • javascript 图片裁剪技巧解读

    学php gd库 看到有图片裁剪 正好整一个 嗯 其实挺简单的 php版 复制代码 代码如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Res

随机推荐