📌  相关文章
📜  Java中的图像处理——给图像加水印(1)

📅  最后修改于: 2023-12-03 15:31:58.662000             🧑  作者: Mango

Java中的图像处理——给图像加水印

在Java中,我们可以通过图像处理技术对图片进行各种各样的操作。其中,给图片加水印是常见的一种操作,可以用来保护图片版权、标记图片来源等。本文将介绍如何用Java给图片添加文本水印和图片水印。

给图片添加文本水印

给图片添加文本水印,需要用到Java中的图像处理库——ImageIO和Graphics2D。下面是一个示例代码,演示如何给一张图片添加文本水印:

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

public class Watermark {
    public static void addTextWatermark(String inputImagePath,
                                         String outputImagePath,
                                         String text,
                                         Font font,
                                         Color color,
                                         int x,
                                         int y) throws Exception {
        // read input image
        File inputFile = new File(inputImagePath);
        BufferedImage inputImage = ImageIO.read(inputFile);

        // create output image
        BufferedImage outputImage = new BufferedImage(inputImage.getWidth(),
                                                       inputImage.getHeight(),
                                                       BufferedImage.TYPE_INT_RGB);
        Graphics2D g2d = outputImage.createGraphics();
        g2d.drawImage(inputImage, 0, 0, null);

        // add watermark
        g2d.setFont(font);
        g2d.setColor(color);
        g2d.drawString(text, x, y);

        // save output image
        File outputFile = new File(outputImagePath);
        ImageIO.write(outputImage, "jpg", outputFile);
        g2d.dispose();
    }

    public static void main(String[] args) {
        try {
            Font font = new Font("Arial", Font.BOLD, 48);
            String inputImagePath = "input.jpg";
            String outputImagePath = "output.jpg";
            String text = "Watermark";
            Color color = Color.WHITE;
            int x = 20;
            int y = 60;
            addTextWatermark(inputImagePath, outputImagePath, text, font, color, x, y);
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
            ex.printStackTrace();
        }
    }
}

在此代码中,我们通过addTextWatermark方法来给输入图片添加文本水印。方法中需要传入输入图片路径、输出图片路径、水印文本、水印字体、水印颜色以及水印位置等参数。具体实现步骤为:

  1. 读取输入图片,创建输出图片;
  2. 在输出图片上绘制输入图片;
  3. 绘制文本水印(设置字体、颜色和位置);
  4. 保存输出图片。
给图片添加图片水印

给图片添加图片水印与添加文本水印类似,需要用到Java中的ImageIO和Graphics2D库。下面是一个示例代码,演示如何给一张图片添加图片水印:

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

public class Watermark {
    public static void addImageWatermark(String inputImagePath,
                                         String outputImagePath,
                                         String watermarkImagePath,
                                         int x,
                                         int y) throws Exception {
        // read input image
        File inputFile = new File(inputImagePath);
        BufferedImage inputImage = ImageIO.read(inputFile);

        // read watermark image
        File watermarkFile = new File(watermarkImagePath);
        BufferedImage watermarkImage = ImageIO.read(watermarkFile);

        // create output image
        BufferedImage outputImage = new BufferedImage(inputImage.getWidth(),
                                                       inputImage.getHeight(),
                                                       BufferedImage.TYPE_INT_RGB);
        Graphics2D g2d = outputImage.createGraphics();
        g2d.drawImage(inputImage, 0, 0, null);

        // add watermark
        g2d.drawImage(watermarkImage, x, y, null);

        // save output image
        File outputFile = new File(outputImagePath);
        ImageIO.write(outputImage, "jpg", outputFile);
        g2d.dispose();
    }

    public static void main(String[] args) {
        try {
            String inputImagePath = "input.jpg";
            String outputImagePath = "output.jpg";
            String watermarkImagePath = "watermark.png";
            int x = 20;
            int y = 60;
            addImageWatermark(inputImagePath, outputImagePath, watermarkImagePath, x, y);
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
            ex.printStackTrace();
        }
    }
}

在此代码中,我们通过addImageWatermark方法来给输入图片添加图片水印。方法中需要传入输入图片路径、输出图片路径、水印图片路径、水印位置等参数。具体实现步骤为:

  1. 读取输入图片和水印图片,创建输出图片;
  2. 在输出图片上绘制输入图片;
  3. 绘制图片水印;
  4. 保存输出图片。
结语

本文介绍了Java中给图片添加文本水印和图片水印的方法,通过这些技术可以方便地保护图片版权和标记图片来源。值得注意的是,在进行图像处理时,需要注意图片格式和分辨率,以免处理后的图片出现质量问题。