Java为图片添加水印

在我们日常的图片处理中,有时候需要给图片添加一些水印信息,以便标识图片的来源或者版权信息。而Java作为一门强大的编程语言,也提供了一些简单的方法来实现为图片添加水印的功能。本文将介绍如何使用Java代码为图片添加水印,并提供相关的代码示例。

添加文字水印

首先,我们可以使用Java提供的java.awtjavax.imageio包来读取和写入图片,使用java.awt.font.TextAttribute来设置文本属性,使用java.awt.Color来设置文本颜色。

下面是一个简单的示例代码,演示如何在一张图片上添加文字水印:

import java.awt.*;
import java.awt.font.TextAttribute;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.AttributedString;
import javax.imageio.ImageIO;

public class Watermark {
    public static void main(String[] args) {
        try {
            File inputFile = new File("input.jpg");
            File outputFile = new File("output.jpg");
            
            BufferedImage image = ImageIO.read(inputFile);
            
            Graphics2D g2d = image.createGraphics();
            
            // 设置水印文字属性
            Font font = new Font("Arial", Font.BOLD, 36);
            AttributedString watermark = new AttributedString("Watermark");
            watermark.addAttribute(TextAttribute.FONT, font);
            watermark.addAttribute(TextAttribute.FOREGROUND, Color.RED);
            
            // 添加水印文字
            g2d.drawString(watermark.getIterator(), 50, 50);
            
            // 保存图片
            ImageIO.write(image, "jpg", outputFile);
            
            System.out.println("Watermark added successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上述代码通过ImageIO.read()方法读取输入图片,使用image.createGraphics()创建一个Graphics2D对象,然后设置水印文字的属性,最后使用g2d.drawString()方法在图片上添加水印文字,再通过ImageIO.write()方法将修改后的图片保存到输出文件中。

添加图片水印

除了文字水印,我们还可以使用Java代码为图片添加图片水印。同样使用java.awtjavax.imageio包来读取和写入图片。

下面是一个示例代码,演示如何在一张图片上添加图片水印:

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

public class Watermark {
    public static void main(String[] args) {
        try {
            File inputFile = new File("input.jpg");
            File watermarkFile = new File("watermark.png");
            File outputFile = new File("output.jpg");
            
            BufferedImage image = ImageIO.read(inputFile);
            BufferedImage watermark = ImageIO.read(watermarkFile);
            
            Graphics2D g2d = image.createGraphics();
            
            // 设置水印的透明度
            AlphaComposite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f);
            g2d.setComposite(alpha);
            
            // 添加水印图片
            g2d.drawImage(watermark, 50, 50, null);
            
            // 保存图片
            ImageIO.write(image, "jpg", outputFile);
            
            System.out.println("Watermark added successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上述代码通过ImageIO.read()方法读取输入图片和水印图片,使用image.createGraphics()创建一个Graphics2D对象,然后使用AlphaComposite.getInstance()方法设置水印的透明度,再通过g2d.drawImage()方法在图片上添加水印图片,最后通过ImageIO.write()方法将修改后的图片保存到输出文件中。

总结

通过使用Java代码,我们可以方便地为图片添加水印,无论是文字水印还是图片水印。以上是两个简单的示例,你可以根据实际需求进行调整和扩展。

值得注意的是,为了使代码更加简洁和高效,我们可以使用第三方库,如Apache Commons ImagingThumbnailator,它们提供了更多的功能和选项来处理图片。

希望本文对你理解如何使用Java为图片添加水印有所帮助。

参考文献:

  • [Java Image Watermarking](