c语言编程笔录

首页 >   > 笔记大全

笔记大全

Java怎么实现添加文字水印和图片水印功能

更新时间:2023-11-08

Java实现添加文字水印和图片水印功能

在图片处理中,添加水印是一种常见的需求,它可以保护图片的版权,也可以给图片添加标识信息。Java提供了丰富的库和工具,使得我们可以轻松实现图片添加文字水印和图片水印的功能。接下来,我们将分别介绍如何在Java中实现添加文字水印和图片水印。

添加文字水印

在Java中,我们可以使用Graphics2D类来实现添加文字水印的功能。通过创建一个Graphics2D对象,并使用其drawString方法,我们可以在图片上绘制水印文字。下面是一个简单的示例代码:

import java.awt.*;
import java.awt.font.*;
import java.awt.image.*;
import java.io.*;

import javax.imageio.ImageIO;

public class TextWatermark {
    public static void addTextWatermark(String imagePath, String watermarkText, String outputImagePath) throws IOException {
        File imageFile = new File(imagePath);
        BufferedImage image = ImageIO.read(imageFile);

        Graphics2D g2d = (Graphics2D) image.getGraphics();
        Font font = new Font("Arial", Font.BOLD, 36);
        g2d.setFont(font);

        // 设置水印文字的颜色为红色
        g2d.setColor(Color.RED);

        // 设置水印的透明度
        AlphaComposite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f);
        g2d.setComposite(alpha);

        // 设置水印文字的位置,这里设置在右下角
        FontMetrics fontMetrics = g2d.getFontMetrics();
        int x = image.getWidth() - fontMetrics.stringWidth(watermarkText) - 10;
        int y = image.getHeight() - fontMetrics.getHeight() - 10;

        // 绘制水印文字
        g2d.drawString(watermarkText, x, y);

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

        // 输出图片
        File outputImageFile = new File(outputImagePath);
        ImageIO.write(image, "png", outputImageFile);
    }
}

以上代码中,我们首先读取要添加水印的图片文件,然后创建一个Graphics2D对象g2d,并设置水印文字的字体、颜色和透明度。接下来,我们通过计算文字的位置,绘制水印文字。最后,我们将处理后的图片输出到指定的路径。

添加图片水印

Java中添加图片水印的方法与添加文字水印类似,我们同样需要使用Graphics2D对象来绘制水印图片。下面是一个简单的示例代码:

import java.awt.*;
import java.awt.image.*;
import java.io.*;

import javax.imageio.ImageIO;

public class ImageWatermark {
    public static void addImageWatermark(String imagePath, String watermarkImagePath, String outputImagePath) throws IOException {
        File imageFile = new File(imagePath);
        BufferedImage image = ImageIO.read(imageFile);

        File watermarkImageFile = new File(watermarkImagePath);
        BufferedImage watermarkImage = ImageIO.read(watermarkImageFile);

        Graphics2D g2d = (Graphics2D) image.getGraphics();

        // 设置水印图片的透明度
        AlphaComposite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f);
        g2d.setComposite(alpha);

        // 设置水印图片的位置,这里设置在右下角
        int x = image.getWidth() - watermarkImage.getWidth() - 10;
        int y = image.getHeight() - watermarkImage.getHeight() - 10;

        // 绘制水印图片
        g2d.drawImage(watermarkImage, x, y, null);

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

        // 输出图片
        File outputImageFile = new File(outputImagePath);
        ImageIO.write(image, "png", outputImageFile);
    }
}

以上代码中,我们首先读取要添加水印的图片文件和水印图片文件,然后创建一个Graphics2D对象g2d,并设置水印图片的透明度。接下来,我们通过计算水印图片的位置,绘制水印图像。最后,我们将处理后的图片输出到指定的路径。

总结

通过使用Java提供的Graphics2D类,我们可以很方便地实现图片添加文字水印和图片水印的功能。通过设置透明度,调整水印的位置和大小,我们可以满足不同需求的水印效果。希望本文对你理解Java中如何实现添加文字水印和图片水印功能有所帮助。