java 文字水印 旋转_java实现倾斜45度水印铺满整张图
时间: 2024-01-15 20:02:30 浏览: 112
Java图片加水印,支持旋转和透明度设置
要实现倾斜45度水印铺满整张图,可以使用Java的Graphics2D类进行操作。以下是一个简单的示例代码:
```java
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class Watermark {
public static void main(String[] args) throws Exception {
String text = "Watermark"; // 水印文字
File input = new File("input.jpg"); // 输入图片
BufferedImage image = ImageIO.read(input); // 读取图片
int width = image.getWidth(); // 图片宽度
int height = image.getHeight(); // 图片高度
BufferedImage watermark = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); // 创建水印图片
Graphics2D g2d = watermark.createGraphics(); // 获取绘图对象
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // 抗锯齿
g2d.setColor(new Color(0, 0, 0, 64)); // 水印颜色(透明度为64)
g2d.setFont(new Font("Arial", Font.BOLD, 32)); // 水印字体
AffineTransform at = new AffineTransform(); // 仿射变换对象
at.rotate(Math.toRadians(45), 0, 0); // 旋转45度
g2d.setTransform(at); // 设置仿射变换
int x = -height / 2; // 水印起始横坐标
int y = 0; // 水印起始纵坐标
while (x < width * 1.5) { // 铺满整张图
g2d.drawString(text, x, y); // 绘制水印文字
x += g2d.getFontMetrics().stringWidth(text); // 水印横坐标增加
y += height / 10; // 水印纵坐标增加
}
g2d.dispose(); // 释放绘图对象资源
Graphics2D g2dImage = image.createGraphics(); // 获取图片绘图对象
g2dImage.drawImage(watermark, 0, 0, null); // 绘制水印图片到原图片
g2dImage.dispose(); // 释放绘图对象资源
File output = new File("output.jpg"); // 输出图片
ImageIO.write(image, "jpg", output); // 输出图片到文件
}
}
```
在上述代码中,首先读取输入图片,然后创建一个与输入图片大小相同的水印图片,并获取水印图片的绘图对象。通过设置绘图对象的属性,如抗锯齿、颜色、字体和仿射变换等,绘制水印文字。由于水印文字是倾斜45度的,因此需要设置仿射变换对象来实现旋转。在绘制水印文字时,可以通过循环将水印文字铺满整张图。最后,将水印图片绘制到原图片,并输出到文件中。
阅读全文