JAVA图片添加多个水印

Java可以使用Java 2D API和ImageIO类来向图像中添加多个水印。


一、Java 2D API和ImageIO类

Java 2D API是Java SE平台的一部分,提供了用于处理图像和绘图的类和接口。它提供了许多功能,包括绘制图形、图像处理、图像过滤和颜色转换等。

Java 2D API的核心是Graphics2D类,它是一个用于绘制图形的高级类。Graphics2D类提供了丰富的方法,用于设置颜色、字体、线条宽度、填充、描边和变换等。Graphics2D类还提供了一组方法,用于在图形上绘制文本、形状和图像等。

ImageIO类,它提供了一组用于读取和写入图像文件的静态方法。它支持各种图像格式,包括JPEG、PNG、GIF和BMP等。ImageIO类还提供了一组方法,用于在不同的颜色空间之间进行转换。

使用Java 2D API和ImageIO类,您可以轻松地创建和处理各种类型的图像。您可以使用Java 2D API绘制图形、文本和图像,并使用ImageIO类将它们保存为图像文件或从图像文件中读取。

二、使用步骤

1.读取图像文件

使用ImageIO类的read方法读取图像文件,并将其存储在BufferedImage对象中。

File inputFile = new File("input.jpg");
BufferedImage inputImage = ImageIO.read(inputFile);

2.创建Graphics2D对象

使用BufferedImage对象的createGraphics方法创建Graphics2D对象。Graphics2D对象允许您在图像上绘制文本和其他形状。

Graphics2D g2d = inputImage.createGraphics();

3.添加水印

使用Graphics2D对象的drawString方法添加文本水印。您可以设置文本的位置、字体、颜色和透明度等参数。

String watermarkText = "Watermark";
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f)); // 设置透明度
g2d.drawString(watermarkText, 10, 20); // 在位置(10,20)处绘制水印文本

此代码将名为watermark.png的图像文件添加到输入图像的左上角。

3.保存修改后的图像

使用ImageIO类的write方法将修改后的图像保存到文件中。

File outputFile = new File("output.jpg");
ImageIO.write(inputImage, "jpg", outputFile);

4.清除Graphics2D对象

使用Graphics2D对象的dispose方法释放内存资源。

g2d.dispose();

完整代码

import java.awt.AlphaComposite;
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 Watermark {
    
    

    public static void main(String[] args) {
    
    
        try {
    
    
            // 读取输入图像
            File inputFile = new File("input.jpg");
            BufferedImage inputImage = ImageIO.read(inputFile);

            // 创建Graphics2D对象
            Graphics2D g2d = inputImage.createGraphics();

            // 添加文本水印
            String watermarkText1 = "Watermark 1";
            g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
            g2d.setFont(new Font("Arial", Font.BOLD, 20));
            g2d.setColor(Color.WHITE);
            g2d.drawString(watermarkText1, 10, 20);

            String watermarkText2 = "Watermark 2";
            g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
            g2d.setFont(new Font("Arial", Font.BOLD, 20));
            g2d.setColor(Color.WHITE);
            g2d.drawString(watermarkText2, 10, 50);

            // 添加图像水印
            File watermarkFile = new File("watermark.png");
			BufferedImage watermarkImage = ImageIO.read(watermarkFile);
			g2d.drawImage(watermarkImage, 0, 0, null);
			        // 保存修改后的图像
        File outputFile = new File("output.jpg");
        ImageIO.write(inputImage, "jpg", outputFile);

        // 清除Graphics2D对象
        g2d.dispose();
    	} catch (Exception e) {
    
    
        System.out.println("Error: " + e.getMessage());
    	}
	}
}

猜你喜欢

转载自blog.csdn.net/qq_35222232/article/details/129162750