java 本地图片加水印并覆盖、
时间: 2024-10-15 14:05:54 浏览: 29
在Java中添加图片水印并覆盖原图通常涉及到图像处理库的使用,如Apache Commons Imaging或Java Advanced Imaging (JAI)。以下是一个简单的步骤概述:
1. 导入必要的库:首先需要导入图像处理相关的库到你的项目中,比如`javax.imageio.ImageIO`用于读取和保存图片,`java.awt.Graphics2D`用于绘制图形。
```java
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
```
2. 加载原始图片和创建新的图片对象:使用`ImageIO.read()`加载原始图片,并创建一个新的BufferedImage来作为结果。
```java
BufferedImage originalImage = ImageIO.read(new File("path_to_original_image.jpg"));
BufferedImage watermarkedImage = new BufferedImage(originalImage.getWidth(), originalImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
```
3. 绘制水印:获取Graphics2D对象,设置透明度(如果需要),然后将水印文字或图标画到新图片上。例如,可以使用FontMetrics计算文本的位置并绘制。
```java
Graphics2D g = watermarkedImage.createGraphics();
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f)); // 设置透明度
g.setFont(new Font("Arial", Font.BOLD, 24));
g.setColor(Color.RED); // 水印颜色
String watermarkText = "Watermark";
int x = originalImage.getWidth() - watermarkText.length() * fontMetrics.charWidth('a');
int y = originalImage.getHeight() - 30; // 根据需要调整位置
g.drawString(watermarkText, x, y);
// 如果有图片水印,可以用类似的方式加载并绘制
BufferedImage watermark = ImageIO.read(new File("path_to_watermark.png"));
g.drawImage(watermark, x, y, null);
```
4. 保存图片:最后使用`ImageIO.write()`保存带有水印的新图片。
```java
try {
ImageIO.write(watermarkedImage, "jpg", new File("path_to_output_image.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
```
阅读全文