Java图片添加水印图片
在进行图片处理时,有时候我们需要在图片上添加水印,以保护图片的版权或加入一些个性化信息。Java提供了丰富的图像处理库,可以轻松实现图片添加水印的功能。本文将介绍如何使用Java实现图片添加水印的功能,并提供相应的代码示例。
1. 图片处理库介绍
在Java中,有多个图像处理库可供选择,其中一些流行的库包括:
- [Java 2D API]( 2D API是Java平台上的底层图像处理库,提供了对图像的基本操作和绘制功能。
- [Apache Commons Imaging]( Commons Imaging是一个开源的图像处理库,提供了对多种图像格式的读取和写入支持,并提供了一些图像处理的辅助功能。
- [Thumbnailator](
- [Imgscalr](
本文将使用Java 2D API来实现图片添加水印的功能。
2. 添加文字水印
我们首先来介绍如何通过Java代码在图片上添加文字水印。下面的代码示例演示了如何使用Java 2D API来实现这个功能:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class TextWatermarkExample {
public static void main(String[] args) {
try {
// 读取原始图片
File originalImage = new File("path/to/original/image.jpg");
BufferedImage image = ImageIO.read(originalImage);
// 创建一个新的图片,大小与原始图片相同
BufferedImage watermarkedImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);
// 在新图片上绘制原始图片
Graphics2D g2d = (Graphics2D) watermarkedImage.getGraphics();
g2d.drawImage(image, 0, 0, null);
// 添加文字水印
String watermarkText = "Sample Watermark";
Font font = new Font("Arial", Font.BOLD, 36);
g2d.setColor(Color.WHITE);
g2d.setFont(font);
g2d.drawString(watermarkText, 20, 50);
// 保存水印图片
File outputImage = new File("path/to/output/image.jpg");
ImageIO.write(watermarkedImage, "jpg", outputImage);
System.out.println("水印图片已保存。");
} catch (Exception e) {
e.printStackTrace();
}
}
}
上述代码使用了Java 2D API来读取原始图片,并创建一个新的图片作为水印图片。然后,我们通过Graphics2D对象在新图片上绘制原始图片,并添加文字水印。最后,我们将带有水印的图片保存到指定的路径。
3. 添加图片水印
除了文字水印,我们也可以在图片上添加另一张图片作为水印。下面的代码示例展示了如何通过Java代码在图片上添加图片水印:
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class ImageWatermarkExample {
public static void main(String[] args) {
try {
// 读取原始图片
File originalImage = new File("path/to/original/image.jpg");
BufferedImage image = ImageIO.read(originalImage);
// 读取水印图片
File watermarkImage = new File("path/to/watermark/image.png");
BufferedImage watermark = ImageIO.read(watermarkImage);
// 创建一个新的图片,大小与原始图片相同
BufferedImage watermarkedImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);
// 在新图片上绘制原始图片
Graphics2D g2d = (Graphics2D) watermarkedImage.getGraphics();
g2d.drawImage(image, 0, 0, null);
// 添加图片水印