本文章,给大家推荐一种使用Java编辑图片的方法,使用Graphics2D工具类,最近接手一个新需求,需要对pdf文件进行签章,对签章模板图片添加当前时间,再调用pdf签章方法,废话不多说直接上源码;该方法只需传入待修改图片路径,根据返回值判断是否修改成功,修改后的文件自动替换原文件。添加文字内容和样式可根据需求修改,我这里修改坐标取的是中心坐标进行修改。
public boolean modified(String filePath) {
try {
// 读取图片文件
File inputFile = new File(filePath);
BufferedImage image = ImageIO.read(inputFile);
if (image == null) {
System.err.println("无法读取图片,可能文件格式不正确或文件损坏。");
return false;
}
// 获取Graphics2D对象
Graphics2D g2d = image.createGraphics();
// 设置文本样式
g2d.setFont(new Font("黑体", Font.PLAIN, 20)); // 黑体加粗小四
g2d.setColor(Color.RED); // 红色
// 准备文本
String dateText = DateUtils.getDate(); // 替换为当前日期
// 获取图片中心点坐标
FontMetrics fm = g2d.getFontMetrics();
int x = (image.getWidth() - fm.stringWidth(dateText)) / 2;
int y = ((image.getHeight() - fm.getHeight()) / 2) + fm.getAscent();
// 绘制文本
g2d.drawString(dateText, x, y);
// 释放资源
g2d.dispose();
// 保存修改后的图片
File outputFile = new File(filePath);
boolean success = ImageIO.write(image, "png", outputFile);
return success; // 返回修改结果
} catch (Exception e) {
e.printStackTrace();
return false; // 发生异常时返回false
}
}