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();
}
}
}
分享到:
相关推荐
标题为“图片裁剪、缩放工具类”,表明这是一个Java编程语言实现的实用程序,能够帮助开发者便捷地对图片进行操作。 在描述中提到,“两种方式”执行图片裁剪和缩放,这可能指的是该工具类提供了两种不同的算法或...
这个"java裁剪、缩放图片工具类"提供了这样的功能。它包含两个主要的组件:一个工具类(ImgUtils.java)和一个测试类(Test.java)。让我们深入探讨这两个类及其背后的图像处理原理。 首先,`ImgUtils.java`是核心...
在Java编程语言中,处理图片是一项常见的任务,尤其在网页开发、移动应用或者图形用户界面设计中。本篇文章将深入探讨如何使用Java...通过深入理解这些技术,我们可以创建出强大的图片处理工具类,满足日常开发需求。
下面,我们将深入探讨如何使用Java来实现批量缩放图片的功能。 首先,Java提供了强大的Java Advanced Imaging (JAI)库和Java 2D API,它们为处理图像提供了丰富的功能,包括缩放、旋转、裁剪等。在这个场景下,我们...
Java实现的微信图片处理工具类是指使用Java语言实现的微信图片处理工具类,可以实现针对图片的裁剪、合并、等比例缩放、旋转、识别等各种常见的图片处理功能。该工具类基于Java自带的类,基于RGB,可以满足不同用户...
Java图像处理技术是Java开发中的一个重要领域,涵盖了多种操作,如添加水印、图像分割、裁剪和缩放。在本项目中,这些功能被整合到一个完整的程序中,并通过单元测试进行了验证,确保了各个功能的正确性。此外,程序...
总结来说,Java的`javax.imageio`包提供了强大的图像处理功能,可以方便地进行图片裁剪、旋转、缩放等操作。这个工具类实例展示了如何利用这些功能实现图片裁切,为Java开发者提供了一个实用的参考。通过理解这个...
本资源“java对图片进行操作.rar”提供了一种用Java进行图像操作的工具类,特别关注于图片的剪裁、重置大小以及按比例缩小等功能。以下是关于这些功能的详细解释和实现方法。 首先,图片剪裁是调整图像大小并提取其...
在压缩包中的"java图片大小转换"文件中,很可能包含了实现这些功能的示例代码和使用说明,可以参考学习以加深理解。在实际开发中,我们还可以借助第三方库如`ImageMagick`、`Java Advanced Imaging (JAI)`或`JavaFX`...
总之,"ZoomImageDemo"项目是一个实用的Java工具,它集成了图片上传、预览、裁剪和缩放功能,为开发者提供了一站式的解决方案。通过学习和理解该项目,开发者可以更好地掌握Java在图像处理领域的应用,提升开发效率...
2. **ImageUtils.java**: 图像处理工具类,可能包含了对图像进行缩放、裁剪、旋转、合并等操作的功能。它可能会利用Java的`javax.imageio`包或者第三方库如Apache Commons Imaging (formerly known as Sanselan)来...
Java开发是软件工程中的核心部分,对于程序员来说,掌握一套高效、全面的工具类库能够极大地提高工作效率。本文将详细解析“java开发常用工具类大全”中涉及的关键知识点,包括但不限于输入字符校验、数据转换、网络...
在Java Android开发中,工具类(Utils类)是开发者经常使用的辅助代码集合,它们封装了一些通用功能,方便在多个类中复用,提高代码的可维护性和可读性。以下是一些常见的Java Android工具类及其包含的知识点: 1. ...
在Java编程中,处理图像操作是一项常见的任务,其中包括裁剪图片和更改图片尺寸。下面将详细介绍这三种方法。 首先,我们来谈谈使用第三方工具ImageMagick。ImageMagick是一款强大的命令行工具,能够处理各种图像...
总的来说,Java图片裁剪涉及到的知识点包括:`BufferedImage`类的使用、`getSubimage()`方法、`Graphics2D`类的图像操作以及异常处理。通过熟练掌握这些技术,你可以实现灵活、高效地处理和裁剪图像。
对于后续版本的开发,可能会增加更多的功能,比如图片裁剪、旋转、滤镜应用等。此外,优化性能、支持更多图片格式,以及提供图形用户界面(GUI)也是提升用户体验的方向。 总的来说,“图片缩小工具(java)”是一个...
在IT行业中,图片裁剪工具是网页和应用程序中不可或缺的一部分,尤其在用户需要上传个人头像、产品照片或进行图像编辑时。`Cropper`是一个强大的JavaScript图片裁剪库,它为开发者提供了一种简单易用的方式来实现...
Java的`BufferedImage`类提供了缩放功能,通过`createScaled BufferedImage`方法可以实现。 4. **图像裁剪**:裁剪图像则是选取图像的特定部分。使用`BufferedImage`类的`getSubimage`方法可以获取图像的一部分,...