Java在图片上绘制矩形的基础方法
在Java中,绘制矩形通常需要借助java.awt和java.awt.image包中的类,核心流程包括加载图片、获取绘图上下文、设置绘制参数以及执行绘制操作,以下是实现这一功能的详细步骤和代码示例。

准备工作:加载目标图片
在绘制矩形前,首先需要加载一张目标图片,Java提供了ImageIO类用于读取图片文件,支持多种常见格式(如PNG、JPG、BMP等),以下是加载图片的基本代码:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
BufferedImage image = null;
try {
image = ImageIO.read(new File("path/to/your/image.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
若图片加载失败(如文件不存在或格式不支持),需捕获IOException并处理异常。
获取绘图上下文:Graphics2D对象
BufferedImage对象是绘制操作的核心载体,通过调用createGraphics()方法可获取Graphics2D对象,该对象提供了丰富的绘图方法,包括绘制矩形、线条、文字等。
if (image != null) {
Graphics2D g2d = image.createGraphics();
// 后续绘制操作基于g2d对象
}
设置绘制参数:颜色、线条样式
在绘制矩形前,需通过Graphics2D对象设置矩形的填充色、边框色、线条粗细等属性,常用方法包括:

setColor(Color color):设置绘制颜色(包括填充和边框)。setStroke(Stroke stroke):设置线条样式(如实线、虚线)。fillRect(int x, int y, int width, int height):绘制填充矩形。drawRect(int x, int y, int width, int height):绘制矩形边框。
绘制一个红色填充、黑色边框的矩形:
g2d.setColor(Color.RED); // 设置填充色 g2d.fillRect(50, 50, 200, 100); // 填充矩形 g2d.setColor(Color.BLACK); // 设置边框色 g2d.setStroke(new BasicStroke(2)); // 设置线条粗细为2像素 g2d.drawRect(50, 50, 200, 100); // 绘制边框
执行绘制并释放资源
完成绘制后,需调用g2d.dispose()释放图形上下文资源,避免内存泄漏。
g2d.dispose();
保存绘制后的图片
绘制完成后,可通过ImageIO将修改后的BufferedImage对象保存为新的图片文件:
try {
ImageIO.write(image, "jpg", new File("path/to/output.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
完整代码示例
以下是一个完整的示例,展示如何在指定图片上绘制矩形并保存结果:

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class DrawRectangleOnImage {
public static void main(String[] args) {
// 1. 加载图片
BufferedImage image = null;
try {
image = ImageIO.read(new File("input.jpg"));
} catch (IOException e) {
System.err.println("图片加载失败: " + e.getMessage());
return;
}
// 2. 获取Graphics2D对象
Graphics2D g2d = image.createGraphics();
// 3. 设置绘制参数并绘制矩形
g2d.setColor(Color.RED);
g2d.fillRect(100, 100, 300, 200); // 填充矩形
g2d.setColor(Color.BLUE);
g2d.setStroke(new BasicStroke(3));
g2d.drawRect(100, 100, 300, 200); // 绘制边框
// 4. 释放资源
g2d.dispose();
// 5. 保存图片
try {
ImageIO.write(image, "jpg", new File("output.jpg"));
System.out.println("矩形绘制完成,图片已保存为output.jpg");
} catch (IOException e) {
System.err.println("图片保存失败: " + e.getMessage());
}
}
}
高级技巧:透明矩形与抗锯齿
若需绘制半透明矩形,可通过AlphaComposite设置透明度:
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f)); g2d.setColor(Color.GREEN); g2d.fillRect(200, 200, 150, 150);
为提升绘制质量,可启用抗锯齿:
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
注意事项
- 图片格式支持:
ImageIO默认支持部分格式,若需处理其他格式(如WebP),需添加额外依赖库。 - 坐标系统:图片的左上角为坐标原点(0,0),x轴向右为正,y轴向下为正。
- 线程安全:
Graphics2D对象不是线程安全的,多线程环境下需同步操作。
通过以上步骤,即可在Java中实现图片上绘制矩形的功能,并根据需求调整颜色、大小、透明度等属性,满足不同场景的图像处理需求。



















