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

Java实现图片裁剪缩放

    博客分类:
  • JAVA
阅读更多

package out;  
  
import java.awt.Image;  
import java.awt.Rectangle;  
import java.awt.geom.AffineTransform;  
import java.awt.image.AffineTransformOp;  
import java.awt.image.BufferedImage;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.util.Iterator;  
  
import javax.imageio.ImageIO;  
import javax.imageio.ImageReadParam;  
import javax.imageio.ImageReader;  
import javax.imageio.stream.ImageInputStream;  
  
public class ImageHelper {  
    /* 
     * 根据尺寸图片居中裁剪 
     */  
     public static void cutCenterImage(String src,String dest,int w,int h) throws IOException{   
         Iterator iterator = ImageIO.getImageReadersByFormatName("jpg");   
         ImageReader reader = (ImageReader)iterator.next();   
         InputStream in=new FileInputStream(src);  
         ImageInputStream iis = ImageIO.createImageInputStream(in);   
         reader.setInput(iis, true);   
         ImageReadParam param = reader.getDefaultReadParam();   
         int imageIndex = 0;   
         Rectangle rect = new Rectangle((reader.getWidth(imageIndex)-w)/2, (reader.getHeight(imageIndex)-h)/2, w, h);    
         param.setSourceRegion(rect);   
         BufferedImage bi = reader.read(0,param);     
         ImageIO.write(bi, "jpg", new File(dest));             
    
     }  
    /* 
     * 图片裁剪二分之一 
     */  
     public static void cutHalfImage(String src,String dest) throws IOException{   
         Iterator iterator = ImageIO.getImageReadersByFormatName("jpg");   
         ImageReader reader = (ImageReader)iterator.next();   
         InputStream in=new FileInputStream(src);  
         ImageInputStream iis = ImageIO.createImageInputStream(in);   
         reader.setInput(iis, true);   
         ImageReadParam param = reader.getDefaultReadParam();   
         int imageIndex = 0;   
         int width = reader.getWidth(imageIndex)/2;   
         int height = reader.getHeight(imageIndex)/2;   
         Rectangle rect = new Rectangle(width/2, height/2, width, height);   
         param.setSourceRegion(rect);   
         BufferedImage bi = reader.read(0,param);     
         ImageIO.write(bi, "jpg", new File(dest));     
     }  
    /* 
     * 图片裁剪通用接口 
     */  
  
    public static void cutImage(String src,String dest,int x,int y,int w,int h) throws IOException{   
           Iterator iterator = ImageIO.getImageReadersByFormatName("jpg");   
           ImageReader reader = (ImageReader)iterator.next();   
           InputStream in=new FileInputStream(src);  
           ImageInputStream iis = ImageIO.createImageInputStream(in);   
           reader.setInput(iis, true);   
           ImageReadParam param = reader.getDefaultReadParam();   
           Rectangle rect = new Rectangle(x, y, w,h);    
           param.setSourceRegion(rect);   
           BufferedImage bi = reader.read(0,param);     
           ImageIO.write(bi, "jpg", new File(dest));             
  
    }   
    /* 
     * 图片缩放 
     */  
    public static void zoomImage(String src,String dest,int w,int h) throws Exception {  
        double wr=0,hr=0;  
        File srcFile = new File(src);  
        File destFile = new File(dest);  
        BufferedImage bufImg = ImageIO.read(srcFile);  
        Image Itemp = bufImg.getScaledInstance(w, h, bufImg.SCALE_SMOOTH);  
        wr=w*1.0/bufImg.getWidth();  
        hr=h*1.0 / bufImg.getHeight();  
        AffineTransformOp ato = new AffineTransformOp(AffineTransform.getScaleInstance(wr, hr), null);  
        Itemp = ato.filter(bufImg, null);  
        try {  
            ImageIO.write((BufferedImage) Itemp,dest.substring(dest.lastIndexOf(".")+1), destFile);  
        } catch (Exception ex) {  
            ex.printStackTrace();  
        }  
          
    }  
}

分享到:
评论

相关推荐

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

    【标签】"图片裁剪"、"头像上传裁剪"、"头像裁剪" 明确了这个项目的核心功能,即提供一种简便的方式来裁剪上传的头像图片。在实际应用中,这种功能可以提高用户体验,因为用户可以根据自己的需求调整头像的显示部分...

    图片裁剪、缩放工具类

    标题为“图片裁剪、缩放工具类”,表明这是一个Java编程语言实现的实用程序,能够帮助开发者便捷地对图片进行操作。 在描述中提到,“两种方式”执行图片裁剪和缩放,这可能指的是该工具类提供了两种不同的算法或...

    java裁剪、缩放图片工具类

    这个"java裁剪、缩放图片工具类"提供了这样的功能。它包含两个主要的组件:一个工具类(ImgUtils.java)和一个测试类(Test.java)。让我们深入探讨这两个类及其背后的图像处理原理。 首先,`ImgUtils.java`是核心...

    批量缩放图片的Java实现

    下面,我们将深入探讨如何使用Java来实现批量缩放图片的功能。 首先,Java提供了强大的Java Advanced Imaging (JAI)库和Java 2D API,它们为处理图像提供了丰富的功能,包括缩放、旋转、裁剪等。在这个场景下,我们...

    java 水印 图像处理 图片分割 裁剪 缩放

    Java图像处理技术是Java开发中的一个重要领域,涵盖了多种操作,如添加水印、图像分割、裁剪和缩放。在本项目中,这些功能被整合到一个完整的程序中,并通过单元测试进行了验证,确保了各个功能的正确性。此外,程序...

    java处理图片大小等比例缩放,自定义修改图片大小,截取,水印

    在压缩包中的"java图片大小转换"文件中,很可能包含了实现这些功能的示例代码和使用说明,可以参考学习以加深理解。在实际开发中,我们还可以借助第三方库如`ImageMagick`、`Java Advanced Imaging (JAI)`或`JavaFX`...

    java图片裁剪,裁剪完新图片保存

    在给定的代码中,我们看到以下关键步骤用于实现 Java 图片裁剪: 1. **初始化参数**:`srcpath` 存储源图片的路径,`subpath` 存储裁剪后图片的保存路径,`x`, `y`, `width`, 和 `height` 分别表示裁剪的起始坐标和...

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

    图片裁剪涉及到选取图像的一部分区域,同样使用`BufferedImage`类,通过`getSubimage()`方法选取指定区域,然后创建新的`BufferedImage`对象保存裁剪结果。 5. **Web应用结构** 提供的文件名`WebRoot`暗示了这是...

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

    总的来说,Java图片上传裁剪功能的实现涉及到文件上传机制、图像处理库的使用、服务器端的图片处理逻辑以及与客户端的交互等多个方面。理解这些知识点,能够帮助开发者有效地实现这样的功能,并确保应用的安全性和...

    java对图片进行操作.rar_java 图片剪裁_java图片_图片

    最后,按比例缩小图片是缩放的一种特例,可以通过计算缩放因子实现。假设我们希望将图片缩小到原来的50%,可以这样做: ```java double scale = 0.5; // 缩放因子 int newWidth = (int) (source.getWidth() * scale...

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

    在Java开发中,图片上传、预览、剪切和缩放是常见的功能需求,尤其在Web应用中。这里,我们主要探讨如何实现这些功能,并基于`swfupload`这个库来构建一个完整的解决方案。 首先,`swfupload`是一个古老的Flash上传...

    java实现的图片裁剪功能示例

    Java 实现图片裁剪功能示例 Java 实现图片裁剪功能示例主要介绍了 Java 实现的图片裁剪功能,涉及 Java 针对图片的读取、转换、保存等相关操作技巧。下面将详细讲解标题、描述、标签和部分内容中的知识点。 标题:...

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

    图片裁剪是指从图片中选取一个矩形区域并保存为新的图片。在Java中,可以使用BufferedImage的getSubimage()方法获取图片的一部分,然后用这个子图创建新的BufferedImage。例如,定义裁剪区域的左上角坐标(x, y)和...

    java处理裁剪图片(更改图片大小)

    在Java编程中,处理图像操作是一项常见的任务,其中包括裁剪图片和更改图片尺寸。下面将详细介绍这三种方法。 首先,我们来谈谈使用第三方工具ImageMagick。ImageMagick是一款强大的命令行工具,能够处理各种图像...

    java 图片裁剪

    总的来说,Java图片裁剪涉及到的知识点包括:`BufferedImage`类的使用、`getSubimage()`方法、`Graphics2D`类的图像操作以及异常处理。通过熟练掌握这些技术,你可以实现灵活、高效地处理和裁剪图像。

    java上传并裁剪图片

    总的来说,Java实现图片上传和裁剪功能需要结合Servlet或Spring MVC处理文件上传,然后选择合适的图像处理库进行图片裁剪。在这个过程中,需要注意文件的大小限制、异常处理以及内存管理,以确保服务的稳定性和效率...

    java+jq+jcrop缩放裁剪上传图片

    这个"java+jq+jcrop缩放裁剪上传图片"的主题涵盖了三个关键部分:Java后端处理、jQuery(jq)前端交互以及Jcrop图像裁剪库的使用。下面将详细解释这三个方面的知识点。 首先,让我们来看看前端部分。jQuery(jq)是...

    jQuery Jcrop图像裁剪的插件结合java后台实现图片裁剪的功能

    而"CutImage"可能是一个处理图片裁剪的Java类或者相关的服务接口名称,负责处理来自前端的裁剪请求。 在开发过程中,需要注意以下几点: 1. **安全考虑**:确保用户上传的图片不包含恶意代码,防止跨站脚本攻击...

Global site tag (gtag.js) - Google Analytics