帮我写一个 给图片加水印的代码
时间: 2024-02-26 18:31:31 浏览: 17
当给图片加水印时,需要用到 Java 图形处理库。常用的 Java 图形处理库有 `Java2D` 和 `ImageIO`,这里以 `ImageIO` 为例进行说明。
以下是一个使用 `ImageIO` 给图片加水印的示例代码:
```java
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class WatermarkDemo {
public static void main(String[] args) throws IOException {
File originalFile = new File("original.jpg");
File watermarkedFile = new File("watermarked.jpg");
// 读取原始图片
BufferedImage originalImage = ImageIO.read(originalFile);
int width = originalImage.getWidth();
int height = originalImage.getHeight();
// 创建一个带透明度的 BufferedImage
BufferedImage watermarkedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = watermarkedImage.createGraphics();
g2d.drawImage(originalImage, 0, 0, null);
// 添加水印文字
String watermarkText = "www.example.com";
Font font = new Font("SimSun", Font.BOLD, 36);
g2d.setFont(font);
g2d.setColor(Color.RED);
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
int x = 50;
int y = height - 50;
g2d.drawString(watermarkText, x, y);
g2d.dispose();
// 输出水印图片
ImageIO.write(watermarkedImage, "png", watermarkedFile);
}
}
```
上述代码中,`originalFile` 是要添加水印的图片,`watermarkedFile` 是添加水印后的图片。通过 `ImageIO.read()` 方法读取原始图片,然后创建一个带透明度的 `BufferedImage`,并将原始图片绘制到其中。通过 `Graphics2D` 对象来添加水印文字,其中:
- `setFont()` 方法设置水印文字的字体;
- `setColor()` 方法设置水印文字的颜色;
- `setComposite()` 方法设置水印文字的透明度;
- `drawString()` 方法将水印文字绘制到图片上。
需要注意的是,在使用中文字体时,要确保字体文件存在,并且字体名称正确。如果出现乱码问题,可以尝试使用 UTF-8 编码,并设置 JVM 参数 `-Dfile.encoding=UTF-8`。
最后,通过 `ImageIO.write()` 方法将带水印的 `BufferedImage` 输出为图片文件,其中第二个参数表示输出图片的格式,可以根据需要设置为 `jpg`、`png`、`gif` 等格式。