写个Java生成图片文本水印的代码
时间: 2024-10-23 20:17:46 浏览: 49
在Java中,我们可以使用`java.awt.Graphics2D`和`javax.imageio.ImageIO`这两个核心库来实现图片加水印的功能。这里是一个简单的示例,我们将文字作为水印放在图片的右下角:
```java
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import javax.imageio.ImageIO;
public class WatermarkImage {
public static void addWatermark(String watermarkText, String inputImagePath, String outputImagePath) throws Exception {
// 加载原始图像
Image image = ImageIO.read(new File(inputImagePath));
// 获取原图尺寸
int width = image.getWidth(null);
int height = image.getHeight(null);
// 创建一个新的带有透明度的BufferedImage用于绘制水印
BufferedImage newImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D graphics = newImage.createGraphics();
graphics.drawImage(image, 0, 0, null); // 将原图复制到新图像
// 设置字体和颜色
Font font = new Font("Arial", Font.BOLD, 24);
graphics.setColor(Color.RED); // 水印颜色,你可以自定义
// 计算水印文字的位置
int x = width - fontMetrics(font).stringWidth(watermarkText) - font.getSize() - 10;
// 绘制水印
graphics.setFont(font);
graphics.drawString(watermarkText, x, y);
// 保存带水印的新图像
ImageIO.write(newImage, "jpg", new File(outputImagePath));
graphics.dispose(); // 关闭图形上下文
}
private static FontMetrics fontMetrics(Font font) {
return Toolkit.getDefaultToolkit().getFontMetrics(font);
}
}
// 使用示例:
String watermark = "这是水印";
String inputPath = "input.jpg";
String outputPath = "output_with_watermark.jpg";
try {
WatermarkImage.addWatermark(watermark, inputPath, outputPath);
} catch (Exception e) {
e.printStackTrace();
}
```
这个代码会将给定的文字添加到指定的图片上。要修改文字内容、颜色、位置或者其他样式,请调整相应部分的代码。
阅读全文
相关推荐


















