java 文字水印 旋转_java实现倾斜水印铺满整张图
时间: 2024-01-15 07:02:30 浏览: 121
Java实现倾斜水印铺满整张图的方法如下:
1. 首先,将要添加水印的图片读入内存,可以使用Java自带的ImageIO类实现。
2. 创建一个Graphics2D对象,将要添加水印的图片作为参数传入,可以使用BufferedImage类的createGraphics方法实现。
3. 设置水印的字体、颜色、透明度等属性,可以使用Graphics2D对象的setFont、setColor、setComposite等方法实现。
4. 根据水印的文字内容,使用Graphics2D对象的drawString方法在图片上绘制水印。
5. 对绘制的水印进行旋转、平移等操作,可以使用Graphics2D对象的rotate、translate等方法实现。
6. 将添加了水印的图片输出到文件或输出流中,可以使用ImageIO类的write方法实现。
下面是一个示例代码,实现了在图片上添加倾斜水印并铺满整张图的功能:
```java
import java.awt.*;
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) {
try {
// 读取图片
BufferedImage image = ImageIO.read(new File("input.jpg"));
// 创建Graphics2D对象
Graphics2D g2d = image.createGraphics();
// 设置字体、颜色、透明度等属性
Font font = new Font("微软雅黑", Font.BOLD, 50);
g2d.setFont(font);
g2d.setColor(new Color(255, 255, 255, 100));
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
// 绘制水印
String watermark = "Watermark";
FontMetrics fm = g2d.getFontMetrics();
int width = fm.stringWidth(watermark);
int height = fm.getHeight();
int x, y;
for (x = -image.getWidth(); x < image.getWidth(); x += width) {
for (y = -image.getHeight(); y < image.getHeight(); y += height) {
g2d.drawString(watermark, x, y);
}
}
// 旋转水印
AffineTransform at = new AffineTransform();
at.rotate(Math.toRadians(45), image.getWidth() / 2, image.getHeight() / 2);
g2d.setTransform(at);
// 输出图片
ImageIO.write(image, "jpg", new File("output.jpg"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
注意事项:
1. 水印的透明度应该适当调整,以免影响图片的可读性。
2. 旋转水印时,需要注意旋转中心的位置,应该放在图片的中心位置。
阅读全文