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();
}
}
}
分享到:
相关推荐
【标签】"图片裁剪"、"头像上传裁剪"、"头像裁剪" 明确了这个项目的核心功能,即提供一种简便的方式来裁剪上传的头像图片。在实际应用中,这种功能可以提高用户体验,因为用户可以根据自己的需求调整头像的显示部分...
标题为“图片裁剪、缩放工具类”,表明这是一个Java编程语言实现的实用程序,能够帮助开发者便捷地对图片进行操作。 在描述中提到,“两种方式”执行图片裁剪和缩放,这可能指的是该工具类提供了两种不同的算法或...
这个"java裁剪、缩放图片工具类"提供了这样的功能。它包含两个主要的组件:一个工具类(ImgUtils.java)和一个测试类(Test.java)。让我们深入探讨这两个类及其背后的图像处理原理。 首先,`ImgUtils.java`是核心...
下面,我们将深入探讨如何使用Java来实现批量缩放图片的功能。 首先,Java提供了强大的Java Advanced Imaging (JAI)库和Java 2D API,它们为处理图像提供了丰富的功能,包括缩放、旋转、裁剪等。在这个场景下,我们...
Java图像处理技术是Java开发中的一个重要领域,涵盖了多种操作,如添加水印、图像分割、裁剪和缩放。在本项目中,这些功能被整合到一个完整的程序中,并通过单元测试进行了验证,确保了各个功能的正确性。此外,程序...
在压缩包中的"java图片大小转换"文件中,很可能包含了实现这些功能的示例代码和使用说明,可以参考学习以加深理解。在实际开发中,我们还可以借助第三方库如`ImageMagick`、`Java Advanced Imaging (JAI)`或`JavaFX`...
在给定的代码中,我们看到以下关键步骤用于实现 Java 图片裁剪: 1. **初始化参数**:`srcpath` 存储源图片的路径,`subpath` 存储裁剪后图片的保存路径,`x`, `y`, `width`, 和 `height` 分别表示裁剪的起始坐标和...
图片裁剪涉及到选取图像的一部分区域,同样使用`BufferedImage`类,通过`getSubimage()`方法选取指定区域,然后创建新的`BufferedImage`对象保存裁剪结果。 5. **Web应用结构** 提供的文件名`WebRoot`暗示了这是...
总的来说,Java图片上传裁剪功能的实现涉及到文件上传机制、图像处理库的使用、服务器端的图片处理逻辑以及与客户端的交互等多个方面。理解这些知识点,能够帮助开发者有效地实现这样的功能,并确保应用的安全性和...
最后,按比例缩小图片是缩放的一种特例,可以通过计算缩放因子实现。假设我们希望将图片缩小到原来的50%,可以这样做: ```java double scale = 0.5; // 缩放因子 int newWidth = (int) (source.getWidth() * scale...
在Java开发中,图片上传、预览、剪切和缩放是常见的功能需求,尤其在Web应用中。这里,我们主要探讨如何实现这些功能,并基于`swfupload`这个库来构建一个完整的解决方案。 首先,`swfupload`是一个古老的Flash上传...
Java 实现图片裁剪功能示例 Java 实现图片裁剪功能示例主要介绍了 Java 实现的图片裁剪功能,涉及 Java 针对图片的读取、转换、保存等相关操作技巧。下面将详细讲解标题、描述、标签和部分内容中的知识点。 标题:...
图片裁剪是指从图片中选取一个矩形区域并保存为新的图片。在Java中,可以使用BufferedImage的getSubimage()方法获取图片的一部分,然后用这个子图创建新的BufferedImage。例如,定义裁剪区域的左上角坐标(x, y)和...
在Java编程中,处理图像操作是一项常见的任务,其中包括裁剪图片和更改图片尺寸。下面将详细介绍这三种方法。 首先,我们来谈谈使用第三方工具ImageMagick。ImageMagick是一款强大的命令行工具,能够处理各种图像...
总的来说,Java图片裁剪涉及到的知识点包括:`BufferedImage`类的使用、`getSubimage()`方法、`Graphics2D`类的图像操作以及异常处理。通过熟练掌握这些技术,你可以实现灵活、高效地处理和裁剪图像。
总的来说,Java实现图片上传和裁剪功能需要结合Servlet或Spring MVC处理文件上传,然后选择合适的图像处理库进行图片裁剪。在这个过程中,需要注意文件的大小限制、异常处理以及内存管理,以确保服务的稳定性和效率...
这个"java+jq+jcrop缩放裁剪上传图片"的主题涵盖了三个关键部分:Java后端处理、jQuery(jq)前端交互以及Jcrop图像裁剪库的使用。下面将详细解释这三个方面的知识点。 首先,让我们来看看前端部分。jQuery(jq)是...
而"CutImage"可能是一个处理图片裁剪的Java类或者相关的服务接口名称,负责处理来自前端的裁剪请求。 在开发过程中,需要注意以下几点: 1. **安全考虑**:确保用户上传的图片不包含恶意代码,防止跨站脚本攻击...