当前位置:首页 > Java

java如何改变图片

2026-03-25 13:44:07Java

修改图片大小

使用 BufferedImageGraphics2D 调整图片尺寸:

BufferedImage originalImage = ImageIO.read(new File("input.jpg"));
BufferedImage resizedImage = new BufferedImage(newWidth, newHeight, originalImage.getType());
Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage, 0, 0, newWidth, newHeight, null);
g.dispose();
ImageIO.write(resizedImage, "jpg", new File("output.jpg"));

图片旋转

通过仿射变换实现旋转(以90度为例):

AffineTransform transform = new AffineTransform();
transform.translate((double) image.getHeight() / 2, (double) image.getWidth() / 2);
transform.rotate(Math.PI / 2);
transform.translate((double) -image.getWidth() / 2, (double) -image.getHeight() / 2);
AffineTransformOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BILINEAR);
BufferedImage rotatedImage = op.filter(image, null);

图片格式转换

将PNG转换为JPG(注意JPG不支持透明度):

java如何改变图片

BufferedImage pngImage = ImageIO.read(new File("input.png"));
BufferedImage jpgImage = new BufferedImage(pngImage.getWidth(), pngImage.getHeight(), BufferedImage.TYPE_INT_RGB);
jpgImage.createGraphics().drawImage(pngImage, 0, 0, Color.WHITE, null);
ImageIO.write(jpgImage, "jpg", new File("output.jpg"));

图片裁剪

指定矩形区域裁剪:

Rectangle cropArea = new Rectangle(x, y, width, height);
BufferedImage croppedImage = originalImage.getSubimage(cropArea.x, cropArea.y, cropArea.width, cropArea.height);

添加水印

叠加文字或图片水印:

java如何改变图片

Graphics2D g = image.createGraphics();
g.setFont(new Font("Arial", Font.BOLD, 30));
g.setColor(Color.RED);
g.drawString("Watermark", x, y); // 文字水印
g.drawImage(watermarkImage, x, y, null); // 图片水印
g.dispose();

调整亮度和对比度

使用 RescaleOp 修改像素值范围:

float scaleFactor = 1.2f; // 亮度系数
float offset = 15f; // 对比度偏移
RescaleOp op = new RescaleOp(scaleFactor, offset, null);
BufferedImage adjustedImage = op.filter(originalImage, null);

图片滤镜效果

实现灰度化:

ColorConvertOp op = new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null);
BufferedImage grayImage = op.filter(originalImage, null);

注意事项

  • 操作后需调用 dispose() 释放 Graphics2D 资源。
  • 处理透明背景时,JPG格式会丢失透明度,建议使用PNG。
  • 高性能处理大量图片时,可考虑使用 ImageIO 的缓存机制或第三方库(如Thumbnailator)。

标签: 图片java
分享给朋友:

相关文章

java如何创建文件

java如何创建文件

使用 File 类创建文件 通过 File 类的 createNewFile() 方法创建文件。此方法返回布尔值,表示文件是否成功创建。 import java.io.File; import ja…

java如何调用接口

java如何调用接口

调用接口的基本方法 在Java中调用接口通常涉及实现接口或使用接口引用对象。以下是几种常见场景的示例: 定义接口 public interface MyInterface { void d…

java如何输出数组

java如何输出数组

输出数组的方法 在Java中,输出数组内容有多种方式,具体取决于数组类型和输出格式需求。以下是几种常见的方法: 使用Arrays.toString()方法 适用于一维数组,直接调用Arrays.to…

java如何输入字符串

java如何输入字符串

使用 Scanner 类 在 Java 中,可以通过 java.util.Scanner 类来输入字符串。以下是一个示例代码: import java.util.Scanner; public c…

如何编译java

如何编译java

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证是否安装成功。若未安装,需从Oracl…

java如何获取当前时间

java如何获取当前时间

获取当前时间的方法 在Java中,可以通过多种方式获取当前时间。以下是几种常见的方法: 使用 java.util.Date Date currentDate = new Date(); Syste…