Graphics2D怎么设置水印深浅
时间: 2024-03-19 08:45:25 浏览: 22
要设置水印的深浅,可以使用 Graphics2D 对象的 setComposite 方法,该方法可以设置绘制时的 Alpha 值,从而改变图形的深浅程度。以下是一个示例代码,演示如何设置水印深浅:
```
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.*;
public class WatermarkExample {
public static void main(String[] args) throws IOException {
// 读入原始图片
BufferedImage originalImage = ImageIO.read(new File("original.png"));
// 创建 Graphics2D 对象,用于绘制水印
Graphics2D g2d = originalImage.createGraphics();
// 设置 Alpha 值,控制水印深浅程度
float alpha = 0.5f; // 水印透明度为 50%
AlphaComposite alphaComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);
g2d.setComposite(alphaComposite);
// 绘制水印
Font font = new Font("Arial", Font.BOLD, 48);
g2d.setFont(font);
g2d.setColor(Color.WHITE);
String watermark = "Watermark";
FontMetrics fm = g2d.getFontMetrics();
Rectangle2D rect = fm.getStringBounds(watermark, g2d);
int x = (originalImage.getWidth() - (int) rect.getWidth()) / 2;
int y = (originalImage.getHeight() - (int) rect.getHeight()) / 2;
g2d.drawString(watermark, x, y);
// 保存修改后的图片
ImageIO.write(originalImage, "png", new File("watermarked.png"));
}
}
```
在该示例中,我们首先读入了一张原始图片,然后创建了一个 Graphics2D 对象,用于绘制水印。接着,我们使用 AlphaComposite 对象设置了 Alpha 值,控制了水印的深浅程度。最后,我们使用 Graphics2D 对象绘制了水印,并保存了修改后的图片。