Java 批量图片增加水印实现教程

1. 概述

在本教程中,我将指导你如何使用Java语言实现批量给图片增加水印的功能。通过这个实例,你将学习到文件的读取和写入、图片处理以及水印的添加等知识。

2. 整体流程

下面的表格展示了实现该功能的整体流程:

步骤 描述
1 读取指定目录下的图片文件
2 为每个图片文件添加水印
3 保存添加水印后的图片文件

3. 详细步骤

3.1 读取图片文件

首先,我们需要读取指定目录下的所有图片文件。可以使用Java的File类来实现文件的读取和遍历。下面是相应的代码:

// 指定目录路径
String directoryPath = "path/to/images";

// 创建File对象,表示目录
File directory = new File(directoryPath);

// 获取目录下的所有文件
File[] files = directory.listFiles();

// 遍历文件列表
for (File file : files) {
    if (file.isFile()) {
        // 处理文件
    }
}

3.2 添加水印

接下来,我们需要为每个图片文件添加水印。可以使用Java的Graphics2D类来实现图片的处理和绘制。下面是添加水印的代码:

// 读取图片文件
BufferedImage image = ImageIO.read(file);

// 创建Graphics2D对象,用于绘制水印
Graphics2D graphics = image.createGraphics();

// 设置水印文字的字体和大小
Font font = new Font("Arial", Font.BOLD, 24);
graphics.setFont(font);

// 设置水印文字的颜色
Color color = new Color(255, 255, 255, 128);
graphics.setColor(color);

// 设置水印文字的位置
int x = 10;
int y = 10;

// 绘制水印文字
graphics.drawString("Watermark", x, y);

// 释放资源
graphics.dispose();

3.3 保存图片文件

最后,我们需要保存添加水印后的图片文件。可以使用Java的ImageIO类来实现图片的保存。下面是保存图片文件的代码:

// 指定保存路径
String savePath = "path/to/save";

// 获取图片文件的名称
String fileName = file.getName();

// 构造保存文件的路径
String saveFilePath = savePath + File.separator + fileName;

// 保存图片文件
ImageIO.write(image, "png", new File(saveFilePath));

4. 完整代码

下面是整个实现过程的完整代码:

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 ImageWatermark {
    public static void main(String[] args) {
        // 指定目录路径
        String directoryPath = "path/to/images";

        // 创建File对象,表示目录
        File directory = new File(directoryPath);

        // 获取目录下的所有文件
        File[] files = directory.listFiles();

        // 遍历文件列表
        for (File file : files) {
            if (file.isFile()) {
                try {
                    // 读取图片文件
                    BufferedImage image = ImageIO.read(file);

                    // 创建Graphics2D对象,用于绘制水印
                    Graphics2D graphics = image.createGraphics();

                    // 设置水印文字的字体和大小
                    Font font = new Font("Arial", Font.BOLD, 24);
                    graphics.setFont(font);

                    // 设置水印文字的颜色
                    Color color = new Color(255, 255, 255, 128);
                    graphics.setColor(color);

                    // 设置水印文字的位置
                    int x = 10;
                    int y = 10;

                    // 绘制水印文字
                    graphics.drawString("Watermark", x, y);

                    // 释放资源
                    graphics.dispose();

                    // 指定保存路径
                    String savePath = "path/to/save";

                    // 获取图片文件的名称
                    String fileName = file.getName();

                    // 构造保存文件的路径
                    String saveFilePath = savePath + File.separator + fileName;

                    // 保存图片文件
                    ImageIO.write(image, "png", new File(saveFilePath));
                } catch (Exception e) {
                    e.printStackTrace();