Java 图片视频添右下角加水印

在数字媒体中,水印是一种常见的版权保护手段。它通常被添加到图片或视频的某个角落,以表明所有权或来源。在Java中,我们可以使用一些库来实现图片和视频的水印功能。本文将介绍如何使用Java为图片和视频添加右下角水印。

流程图

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

flowchart TD
    A[开始] --> B[创建水印文本]
    B --> C[获取图片或视频]
    C --> D[创建水印图像]
    D --> E[将水印图像添加到图片或视频的右下角]
    E --> F[保存处理后的图片或视频]
    F --> G[结束]

类图

以下是涉及的类的类图:

classDiagram
    class Watermark {
        +String text
        +int x
        +int y
        +int opacity
        +Color color
        +Font font
        +Image image
        +Graphics2D g2d
    }
    class ImageProcessor {
        +Image image
        +void addWatermark(Watermark watermark)
    }
    class VideoProcessor {
        +File videoFile
        +void addWatermark(Watermark watermark)
    }
    Watermark -- ImageProcessor : "添加水印"
    Watermark -- VideoProcessor : "添加水印"

代码示例

以下是为图片添加右下角水印的代码示例:

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

public class WatermarkExample {
    public static void main(String[] args) {
        try {
            File inputFile = new File("input.jpg");
            File outputFile = new File("output.jpg");

            BufferedImage inputImage = ImageIO.read(inputFile);
            ImageProcessor imageProcessor = new ImageProcessor(inputImage);

            Watermark watermark = new Watermark();
            watermark.text = "Copyright © 2023";
            watermark.x = inputImage.getWidth() - watermark.text.length() * 10;
            watermark.y = inputImage.getHeight() - 30;
            watermark.opacity = 0.5f;
            watermark.color = new Color(0, 0, 0, watermark.opacity);
            watermark.font = new Font("Arial", Font.BOLD, 20);

            imageProcessor.addWatermark(watermark);

            ImageIO.write(imageProcessor.getImage(), "jpg", outputFile);
            System.out.println("水印添加成功!");
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("水印添加失败!");
        }
    }
}

class Watermark {
    public String text;
    public int x;
    public int y;
    public float opacity;
    public Color color;
    public Font font;
    public Image image;
    public Graphics2D g2d;

    public void draw(Graphics2D g2d) {
        this.g2d = g2d;
        g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, opacity));
        g2d.setColor(color);
        g2d.setFont(font);
        g2d.drawString(text, x, y);
    }
}

class ImageProcessor {
    private BufferedImage image;

    public ImageProcessor(BufferedImage image) {
        this.image = image;
    }

    public void addWatermark(Watermark watermark) {
        Graphics2D g2d = image.createGraphics();
        watermark.draw(g2d);
        g2d.dispose();
    }

    public BufferedImage getImage() {
        return image;
    }
}

结尾

通过上述代码示例,我们可以看到Java为图片添加水印的过程相对简单。通过创建Watermark类和ImageProcessor类,我们可以轻松地将水印添加到图片的右下角。同样的方法也可以应用于视频水印的添加。虽然本文没有提供视频水印的代码示例,但原理是相同的。希望本文对您有所帮助,让您能够更好地了解如何在Java中为图片和视频添加水印。