Java图片加添水印固定水印大小
时间: 2023-07-18 19:29:53 浏览: 122
Java给图片加水印
要在Java中为图片添加固定大小的水印,您可以使用Java的Graphics2D类来实现。以下是一个简单的示例代码:
```java
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class AddWatermark {
public static void main(String[] args) {
try {
// 读取原始图片
BufferedImage originalImage = ImageIO.read(new File("original.jpg"));
// 创建一个带透明度的图片
BufferedImage watermarkedImage = new BufferedImage(originalImage.getWidth(), originalImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
// 获取Graphics2D对象
Graphics2D g2d = (Graphics2D) watermarkedImage.getGraphics();
// 将原始图片绘制到带透明度的图片中
g2d.drawImage(originalImage, 0, 0, null);
// 设置水印字体
Font font = new Font("Arial", Font.BOLD, 36);
g2d.setFont(font);
// 设置水印颜色
g2d.setColor(Color.RED);
// 设置水印透明度
AlphaComposite alphaChannel = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f);
g2d.setComposite(alphaChannel);
// 绘制水印
String watermark = "My Watermark";
FontMetrics fontMetrics = g2d.getFontMetrics();
Rectangle2D rect = fontMetrics.getStringBounds(watermark, g2d);
int centerX = (originalImage.getWidth() - (int) rect.getWidth()) / 2;
int centerY = (originalImage.getHeight() - (int) rect.getHeight()) / 2;
g2d.drawString(watermark, centerX, centerY);
// 保存带水印的图片
ImageIO.write(watermarkedImage, "png", new File("watermarked.png"));
// 释放资源
g2d.dispose();
System.out.println("Watermark added successfully.");
} catch (IOException ex) {
System.err.println(ex);
}
}
}
```
在这个示例代码中,我们首先读取原始图片,并创建一个新的带透明度的BufferedImage对象。然后,我们获取Graphics2D对象,并将原始图片绘制到带透明度的图片中。接下来,我们设置水印的字体、颜色和透明度,并在图片中央绘制水印。最后,我们保存带水印的图片,并释放资源。
请注意,在本示例中,水印的大小是根据水印文本自动计算的,以使其居中。如果您希望水印的大小是固定的,请根据需要调整绘制水印的代码。
阅读全文