Java 图片 Base64 加水印教程

作为一名经验丰富的开发者,我很高兴能帮助刚入行的小白学习如何在 Java 中实现图片的 Base64 加水印。本文将详细介绍整个过程,并通过代码示例和图表来帮助您更好地理解。

流程概述

首先,让我们通过一个表格来概述整个流程:

步骤 描述
1 读取图片文件
2 将图片转换为 Base64 编码
3 在图片上添加水印
4 将带有水印的图片转换回 Base64 编码

详细步骤

步骤 1:读取图片文件

首先,我们需要读取要处理的图片文件。这里我们使用 ImageIO 类来实现。

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public BufferedImage readImage(String imagePath) throws IOException {
    BufferedImage image = ImageIO.read(new File(imagePath));
    return image;
}

步骤 2:将图片转换为 Base64 编码

接下来,我们将读取的图片转换为 Base64 编码。这里我们使用 ImageIO 类和 Base64 类来实现。

import java.util.Base64;

public String imageToBase64(BufferedImage image) throws IOException {
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    ImageIO.write(image, "png", os);
    byte[] imageBytes = os.toByteArray();
    return Base64.getEncoder().encodeToString(imageBytes);
}

步骤 3:在图片上添加水印

现在,我们将在图片上添加水印。这里我们使用 Graphics2D 类来实现。

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;

public BufferedImage addWatermark(BufferedImage image, String watermarkText) {
    Graphics2D g2d = image.createGraphics();
    g2d.setFont(new Font("宋体", Font.BOLD, 20));
    g2d.setColor(Color.RED);
    g2d.drawString(watermarkText, 10, 30);
    g2d.dispose();
    return image;
}

步骤 4:将带有水印的图片转换回 Base64 编码

最后,我们将带有水印的图片转换回 Base64 编码。

public String watermarkedImageToBase64(BufferedImage watermarkedImage) throws IOException {
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    ImageIO.write(watermarkedImage, "png", os);
    byte[] imageBytes = os.toByteArray();
    return Base64.getEncoder().encodeToString(imageBytes);
}

关系图

以下是整个流程的关系图:

erDiagram
    IMAGEIO ||--o| IMAGE : "writes"
    BASE64 ||--o| IMAGE : "encodes"
    BUFFERED_IMAGE ||--o| IMAGEIO : "reads"
    BUFFERED_IMAGE ||--o| GRAPHICS2D : "draws"

序列图

以下是整个流程的序列图:

sequenceDiagram
    participant User
    participant ReadImage
    participant ImageToBase64
    participant AddWatermark
    participant WatermarkedImageToBase64

    User->>ReadImage: readImage(imagePath)
    ReadImage->>ImageToBase64: imageToBase64(image)
    ImageToBase64-->>WatermarkedImageToBase64: image
    User->>AddWatermark: addWatermark(image, watermarkText)
    AddWatermark-->>WatermarkedImageToBase64: watermarkedImage
    WatermarkedImageToBase64-->>ImageToBase64: watermarkedImageToBase64(watermarkedImage)

结尾

通过本文,您应该已经了解了如何在 Java 中实现图片的 Base64 加水印。希望这些代码示例和图表能够帮助您更好地理解和实现这一功能。如果您在实现过程中遇到任何问题,欢迎随时向我咨询。祝您编程愉快!