`
iuhiqnehc
  • 浏览: 14359 次
社区版块
存档分类
最新评论

裁剪图片(Java端)

 
阅读更多
package cn.com;
 
import java.awt.Rectangle;
 import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.util.Iterator;
 import javax.imageio.ImageIO;
 import javax.imageio.ImageReadParam;
 import javax.imageio.ImageReader;
 import javax.imageio.stream.ImageInputStream;
 
/**
  * 裁剪图片。总体思想:
  * 
 * 1.前台网页用js得到裁剪图片的id及x,y(宽度和高度)。
  * 
 * 2.服务端根据id取出要裁剪的图片 。
  * 
 * 3.根据这些参数来生成裁剪的图像。
  */
 public class CutImage {
  // 源图片路径名称。如:c:\\1.jpg
  private String srcpath;
  // 剪切图片存放路径名称。如:c:\\2.jpg
  private String subpath;
  // 剪切点x坐标
  private int x;
  private int y;
  // 剪切图片宽度
  private int width;
  private int height;
 
 public CutImage() {
  }
 
 public CutImage(int x, int y, int width, int height) {
   this.x = x;
   this.y = y;
   this.width = width;
   this.height = height;
  }
 
 /**
   * 裁剪图片,并保存裁剪完的新图片 。
   */
  public void cut() throws IOException {
   FileInputStream is = null;
   ImageInputStream iis = null;
   try {
    // 读取图片文件
    is = new FileInputStream(srcpath);
    // 图片后缀
    String suffix = srcpath.substring(srcpath.lastIndexOf(".") + 1);
    /*
     * 返回包含所有当前已注册 ImageReader 的 Iterator,这些 ImageReader 声称能够解码指定格式。
     * 参数:formatName - 包含非正式格式名称 . (例如 "jpeg" 或 "tiff")等 。
     */
    Iterator<ImageReader> it = ImageIO
      .getImageReadersByFormatName(suffix);
    ImageReader reader = it.next();
    // 获取图片流
    iis = ImageIO.createImageInputStream(is);
    /*
     * <p>iis:读取源。true:只向前搜索 </p>.将它标记为 ‘只向前搜索’。
     * 此设置意味着包含在输入源中的图像将只按顺序读取,可能允许 reader 避免缓存包含与以前已经读取的图像关联的数据的那些输入部分。
     */
    reader.setInput(iis, true);
    /*
     * 描述如何对流进行解码的类<p>.用于指定如何在输入时从 Java Image I/O
     * 框架的上下文中的流转换一幅图像或一组图像。用于特定图像格式的插件 将从其 ImageReader 实现的
     * getDefaultReadParam 方法中返回 ImageReadParam 的实例。
     */
    ImageReadParam param = reader.getDefaultReadParam();
    /*
     * 图片裁剪区域。Rectangle 指定了坐标空间中的一个区域,通过 Rectangle 对象
     * 的左上顶点的坐标(x,y)、宽度和高度可以定义这个区域。
     */
    Rectangle rect = new Rectangle(x, y, width, height);
    // 提供一个 BufferedImage,将其用作解码像素数据的目标。
    param.setSourceRegion(rect);
    /*
     * 使用所提供的 ImageReadParam 读取通过索引 imageIndex 指定的对象,并将 它作为一个完整的
     * BufferedImage 返回。
     */
    BufferedImage bi = reader.read(0, param);
    // 保存新图片
    ImageIO.write(bi, suffix, new File(subpath));
   } finally {
    if (is != null)
     is.close();
    if (iis != null)
     iis.close();
   }
  }
 
 public String getSrcpath() {
   return srcpath;
  }
 
 public void setSrcpath(String srcpath) {
   "http://blog.51cto.com/viewpic.php?refimg=" + this.srcpath = srcpath;
  }
 
 public String getSubpath() {
   return subpath;
  }
 
 public void setSubpath(String subpath) {
   this.subpath = subpath;
  }
 
 public int getX() {
   return x;
  }
 
 public void setX(int x) {
   this.x = x;
  }
 
 public int getY() {
   return y;
  }
 
 public void setY(int y) {
   this.y = y;
  }
 
 public int getWidth() {
   return width;
  }
 
 public void setWidth(int width) {
   this.width = width;
  }
 
 public int getHeight() {
   return height;
  }
 
 public void setHeight(int height) {
   this.height = height;
  }
 
 public static void main(String[] args) throws Exception {
   CutImage o = new CutImage(100, 100, 50, 50);
   String name = "d:\\HuNan.jpg";
   o.setSrcpath(name);
   o.setSubpath("d:\\test2.jpg");
   o.cut();
  }
 
}

分享到:
评论

相关推荐

    java上传并裁剪图片

    在Java编程中,上传并裁剪图片是一项常见的需求,尤其在Web应用中,例如用户头像设置、商品图片处理等场景。本篇文章将详细介绍如何在Java环境中实现这一功能。 首先,图片上传通常涉及到客户端(如浏览器)与...

    java图片裁剪

    在用户通过JCrop选择裁剪区域后,可以将裁剪参数发送到服务器,然后在Java端根据这些参数裁剪图像。 五、Java和JCrop结合使用 1. 前端交互:在HTML页面上使用JCrop设置裁剪区域,获取裁剪的坐标和比例。 2. 数据...

    java图片上传、控制大小、宽度高度和图片裁剪并保存

    在Java编程中,图片处理是一项常见的任务,包括图片的上传、尺寸控制、宽高调整以及裁剪和保存等操作。这些功能在Web应用、图像处理软件或者数据分析项目中都有广泛的应用。下面我们将深入探讨如何使用Java实现这些...

    Java Servlet版图片裁剪

    【Java Servlet版图片裁剪】技术是Web开发中一种实现图像处理的方式,它结合了Java Servlet、AJAX和JCrop库,提供了用户友好的图片裁剪功能。在本项目中,开发者利用Servlet作为服务器端的核心处理组件,处理来自...

    java图片的上传裁剪功能实现

    裁剪部分,可以通过解析用户提供的坐标和尺寸信息,动态地裁剪图片。如果使用了图像处理库,它们通常提供了方便的API来实现这一过程。 5. **响应返回**: 完成裁剪后,服务器需要将结果反馈给客户端。这可能是一个...

    jquery crop+java 裁剪上传图片

    总的来说,"jQuery Crop+Java 裁剪上传图片"项目涵盖了前端交互设计、图片处理算法、异步通信以及服务器端的安全处理等多个IT领域的知识点,是学习和实践Web开发技术的一个很好的实例。通过这个项目,开发者可以深入...

    头像上传-裁剪-JAVA

    在开发Web应用时,用户头像的上传与裁剪功能是一项常见的需求,它允许用户个性化地选择并调整自己的展示图片。本项目名为“头像上传-裁剪-JAVA”,是基于JAVA实现的一个功能模块,主要涉及到的技术点包括文件上传、...

    java 图片上传,可预览可剪切可缩放

    - **后端缩放**:在服务器端,可以使用Java的图像处理库,如`ImageIO`或`JavaFX`,根据指定尺寸重新调整图片大小。 5. **Java实现** - **Servlet处理**:Java Web应用通常使用Servlet来接收上传的文件,解析`...

    Cropper 图片裁剪工具 --java

    例如,你可以这样裁剪图片: ```javascript cropper.crop(); ``` 并可以获取裁剪的坐标和大小: ```javascript var data = cropper.getData(); ``` 这些数据可以发送到后端,以便在Java环境中进行进一步的处理。 在...

    jsp+CropZoom+jquery+java 图片缩放裁剪

    总的来说,"jsp+CropZoom+jquery+java 图片缩放裁剪"项目是一个结合了前后端技术的实例,展示了如何在Web应用中实现实用的图像裁剪功能。对于学习Java Web开发和图像处理的开发者来说,这是一个很好的实践案例。

    js+jquery+java实现的头像上传和裁剪

    在服务器端,Java承担了接收上传文件和处理图像的任务。在Java中,我们可以使用Apache Commons FileUpload库处理HTTP请求中的多部分数据,接收用户上传的图像文件。例如,创建一个Servlet来处理上传请求,解析`Part`...

    JSP 可视化裁剪图片(完整)

    总结,JSP 可视化裁剪图片的实现涉及到前端的HTML5、CSS3、JavaScript(JQuery和JQuery UI)、Canvas技术,以及后端的Java处理和文件存储。整个过程需要综合运用多种技术,确保用户体验流畅、安全且高效。

    JAVA实现的图片剪切预览

    在IT行业中,图片剪切和预览功能是常见的需求,特别是在网页应用和图像处理系统中。...通过这些技术的结合,可以构建出一个完整的图片剪切预览和处理系统,满足用户在网页上自由裁剪图片并实时预览的需求。

    java上传图片并裁剪

    服务器接收到这些坐标后,会用它们来裁剪图片。 在Java中,我们可以使用Apache Commons Imaging库或者Java的内置`BufferedImage`类来进行裁剪。以下是一个使用`BufferedImage`的例子: ```java public ...

    java 拍照 截取图片

    Java Advanced Imaging提供了一系列高级图像处理操作,如旋转、缩放、裁剪等,但并不直接支持摄像头访问。JavaFX,作为Java的现代UI库,提供了Media类,可以用于播放、暂停、停止媒体,包括摄像头流。通过`javafx....

    java 切割图片 可预览,完整效果

    在这个例子中,`Scalr.crop()`方法用于裁剪图片,参数分别表示源图像、起始x坐标、起始y坐标、目标宽度和高度。 总的来说,Java提供了丰富的工具和库来处理图片上传、预览和剪切。通过结合使用这些工具,我们可以...

    JSP可视化裁剪图片

    "JSP可视化裁剪图片"就是解决这个问题的一种技术方案,它允许用户在上传大尺寸图片后进行可视化的裁剪操作,确保图片大小符合预设的需求。接下来,我们将详细探讨这个主题。 1. **JSP基础**: JSP(JavaServer ...

    java版头像上传缩放裁剪功能

    在Java开发中,头像上传、缩放和裁剪功能是一项常见的需求,特别是在社交网络、论坛或者个人资料管理系统中。这个java版的头像上传裁剪功能是针对.NET版本的一个补充,提供了完整的Java实现方案。下面我们将详细探讨...

    java图片裁切

    通过以上这些知识点,我们可以构建一个完整的Java后台图片裁剪系统,实现用户上传图片后,服务器端进行裁剪并返回裁剪后的结果。在实际开发中,可能还需要考虑如何将裁剪后的图像保存回服务器,以及如何将结果反馈给...

    java多图片上传、删除、预览,post提交

    在Java开发中,图片上传、删除和预览是常见的功能需求,尤其是在Web应用中。这里我们探讨的是如何利用Java和layui插件实现这些功能,并通过POST方法将数据提交到服务端。layui是一款流行的前端UI框架,它提供了丰富...

Global site tag (gtag.js) - Google Analytics