java 在jpg上添加水印
时间: 2024-09-14 10:06:50 浏览: 43
如何使用JAVA实现数字水印
在Java中给JPG图片添加水印通常涉及以下几个步骤:
1. 读取原始图片:使用Java的图像处理库,如AWT或者第三方库(如Apache Commons Imaging或ImageIO)读取JPG图片。
2. 创建水印图片:根据需要创建一个水印图片,可以是文字,也可以是其他图片。
3. 将水印图片叠加到原始图片上:根据水印的位置和透明度等因素,将水印图片正确地放置在原始图片的适当位置上。
4. 保存带水印的图片:将添加了水印的图片保存为JPG格式。
以下是一个简单的示例代码,展示如何使用Java标准库中的`BufferedImage`和`Graphics2D`类来在图片上添加文字水印:
```java
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class WatermarkImage {
public static void main(String[] args) {
try {
// 读取原始图片
BufferedImage originalImage = ImageIO.read(new File("path/to/original.jpg"));
// 创建一个新的图片对象,用于绘制带水印的图片
BufferedImage watermarkedImage = new BufferedImage(
originalImage.getWidth(),
originalImage.getHeight(),
originalImage.getType());
Graphics2D g2d = watermarkedImage.createGraphics();
// 绘制原始图片
g2d.drawImage(originalImage, 0, 0, null);
// 设置水印颜色
g2d.setColor(Color.GRAY);
// 设置字体大小和样式
g2d.setFont(new Font("Arial", Font.BOLD, 20));
// 设置水印透明度
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
// 设置水印位置
FontMetrics fm = g2d.getFontMetrics();
String watermarkText = "水印";
int x = (originalImage.getWidth() - fm.stringWidth(watermarkText)) / 2;
int y = originalImage.getHeight() - (originalImage.getHeight() / 3);
// 在指定位置绘制水印
g2d.drawString(watermarkText, x, y);
// 释放资源
g2d.dispose();
// 保存带水印的图片
ImageIO.write(watermarkedImage, "jpg", new File("path/to/watermarked.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
请确保在实际应用中处理好异常和资源释放,避免内存泄漏等问题。
阅读全文