java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java为图片添加水印并保存

Java为图片添加水印并保存实现方法(附带源码)

作者:Katie。

这篇文章主要介绍了如何使用Java编程语言在图像上添加文字或图片水印,并提供了一个简单的Java程序实现,文中给出了详细的代码示例,需要的朋友可以参考下

项目背景

在图像处理领域,水印是一种常见的保护版权和标识图片归属的方法。水印可以是文字、水印图片或透明图层,它通常位于图片的中央或角落。在很多应用中,例如图片共享、相册管理等,我们可能需要在图像上添加水印。

Java提供了强大的图像处理能力,可以通过Graphics2D类在图像上绘制水印。本项目的目标是实现一个Java程序,能够将文字或图片水印添加到图像上,并将修改后的图像保存为文件。

相关知识

BufferedImage

BufferedImage是Java中用来表示图像的类,它允许对图像进行像素级别的操作。图像可以通过Graphics2D进行绘制、缩放、添加水印等。

Graphics2D

Graphics2DGraphics的一个子类,用于图形绘制。通过Graphics2D,我们可以在图像上绘制各种元素,如文本、图片、形状等,并控制绘制的透明度、颜色、字体等属性。

ImageIO

ImageIO类用于从文件读取图像,或将图像保存为指定格式的文件(如PNG、JPEG等)。

实现思路

实现代码

以下是一个实现为图片添加文字水印和图片水印的Java程序:

1. Java代码:添加水印并保存图像

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

public class ImageWatermark {

    public static void main(String[] args) {
        try {
            // 1. 加载图像
            File inputFile = new File("path/to/your/image.jpg");  // 修改为你的图片路径
            BufferedImage image = ImageIO.read(inputFile);

            // 2. 添加文字水印
            String textWatermark = "Sample Watermark";
            BufferedImage textWatermarkedImage = addTextWatermark(image, textWatermark);

            // 3. 添加图片水印
            File watermarkImageFile = new File("path/to/your/watermark_image.png");  // 修改为水印图片路径
            BufferedImage watermarkImage = ImageIO.read(watermarkImageFile);
            BufferedImage finalImage = addImageWatermark(textWatermarkedImage, watermarkImage);

            // 4. 保存添加水印后的图像
            File outputFile = new File("path/to/save/watermarked_image.png");  // 输出文件路径
            ImageIO.write(finalImage, "PNG", outputFile);  // 保存为PNG格式

            System.out.println("Watermark added and image saved successfully!");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 添加文字水印
    private static BufferedImage addTextWatermark(BufferedImage originalImage, String watermarkText) {
        Graphics2D g2d = (Graphics2D) originalImage.getGraphics();

        // Set font and transparency
        Font font = new Font("Arial", Font.BOLD, 50);
        g2d.setFont(font);
        g2d.setColor(new Color(255, 255, 255, 128));  // 白色且半透明

        // Get the watermark's position (center the watermark on the image)
        FontMetrics fontMetrics = g2d.getFontMetrics();
        int x = (originalImage.getWidth() - fontMetrics.stringWidth(watermarkText)) / 2;
        int y = originalImage.getHeight() / 2;

        // Draw watermark text
        g2d.drawString(watermarkText, x, y);

        // Dispose the graphics context
        g2d.dispose();

        return originalImage;
    }

    // 添加图片水印
    private static BufferedImage addImageWatermark(BufferedImage originalImage, BufferedImage watermarkImage) {
        Graphics2D g2d = (Graphics2D) originalImage.getGraphics();

        // Get the watermark image's position (bottom-right corner)
        int x = originalImage.getWidth() - watermarkImage.getWidth() - 10;  // 10px margin from the right edge
        int y = originalImage.getHeight() - watermarkImage.getHeight() - 10;  // 10px margin from the bottom edge

        // Draw watermark image with transparency
        g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));  // Set transparency
        g2d.drawImage(watermarkImage, x, y, null);

        // Dispose the graphics context
        g2d.dispose();

        return originalImage;
    }
}

代码解读

常见的水印操作

项目总结

通过本项目,我们实现了一个简单的Java程序,能够在图像上添加文字水印和图片水印。使用Graphics2D类,我们可以灵活地控制水印的外观,包括位置、透明度、颜色等,并通过ImageIO.write()保存修改后的图像。

优化方向

通过这个项目,您可以掌握如何使用Java进行图像水印的处理,适用于版权保护、品牌宣传、图片批量处理等场景。

到此这篇关于Java为图片添加水印并保存实现方法的文章就介绍到这了,更多相关Java为图片添加水印并保存内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文