当前位置:首页 > 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不支持透明度):

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);

添加水印

叠加文字或图片水印:

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);

图片滤镜效果

实现灰度化:

java如何改变图片

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

注意事项

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

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

相关文章

vue实现图片打点

vue实现图片打点

实现图片打点的基本思路 图片打点功能通常指在图片上添加可交互的标记点,点击或悬停时显示相关信息。Vue实现该功能需要结合DOM操作和事件监听。 核心步骤 准备图片和容器 在Vue组件中设置一个相对定…

如何使用java

如何使用java

安装Java开发环境 下载并安装Java Development Kit(JDK),推荐从Oracle官网或OpenJDK获取最新版本。安装完成后配置环境变量,确保JAVA_HOME指向JDK安装路径…

java如何运行

java如何运行

运行Java程序的基本方法 Java程序的运行需要经过编写、编译和执行三个主要阶段。以下是具体步骤: 编写Java源代码 创建一个以.java为后缀的文件,例如HelloWorld.java。文件内…

h5实现全景图片

h5实现全景图片

H5 实现全景图片的方法 使用 Three.js 库 Three.js 是一个强大的 3D 库,可以用于创建全景图片效果。以下是一个简单的实现步骤: 引入 Three.js 库 <scri…

如何自学java

如何自学java

选择合适的学习资源 从官方文档开始,Oracle提供的Java官方教程(Java Tutorials)是权威且免费的学习资料。在线平台如Codecademy、Coursera或Udemy提供互动式课程…

java如何创建类

java如何创建类

创建类的基本语法 在Java中,类通过class关键字定义,语法如下: [访问修饰符] class 类名 { // 成员变量(属性) // 构造方法 // 成员方法 }…