0
点赞
收藏
分享

微信扫一扫

java 图片指定位置加水印

星河出山 2024-02-02 阅读 12

Java 图片指定位置加水印的实现

一、整体流程

为了实现在 Java 中给图片指定位置加水印的功能,我们可以按以下步骤进行操作:

  1. 加载原始图片和水印图片;
  2. 创建一个新的图片,并将原始图片绘制到新图片上;
  3. 在新图片上绘制水印图片,并指定位置;
  4. 保存新图片。

下面将详细介绍每一步需要做的事情,并提供相应的Java代码来实现。

二、具体步骤

1. 加载原始图片和水印图片

首先,我们需要加载要添加水印的原始图片和水印图片。Java提供了ImageIO类来加载图片,具体代码如下:

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

public class Main {
    public static void main(String[] args) {
        try {
            // 加载原始图片
            BufferedImage originalImage = ImageIO.read(new File("original.jpg"));

            // 加载水印图片
            BufferedImage watermarkImage = ImageIO.read(new File("watermark.png"));

            // 在这里进行后续步骤...
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上述代码中,我们使用ImageIO.read()方法加载了原始图片和水印图片,并将它们分别存储在originalImagewatermarkImage变量中。

2. 创建新图片并绘制原始图片

接下来,我们需要创建一个新的图片,并将原始图片绘制到新图片上。Java提供了BufferedImage类来操作图片,具体代码如下:

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

public class Main {
    public static void main(String[] args) {
        try {
            // 加载原始图片和水印图片...

            // 创建新图片
            BufferedImage newImage = new BufferedImage(originalImage.getWidth(), originalImage.getHeight(), BufferedImage.TYPE_INT_RGB);

            // 获取新图片的绘图对象
            Graphics2D graphics = newImage.createGraphics();

            // 将原始图片绘制到新图片上
            graphics.drawImage(originalImage, 0, 0, null);

            // 在这里进行后续步骤...
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上述代码中,我们使用BufferedImage的构造函数创建了一个与原始图片大小相同的新图片,并使用newImage.createGraphics()方法获取新图片的绘图对象graphics。然后,我们使用graphics.drawImage()方法将原始图片绘制到新图片上。

3. 绘制水印图片并指定位置

现在,我们需要将水印图片绘制到新图片上,并指定它的位置。具体代码如下:

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

public class Main {
    public static void main(String[] args) {
        try {
            // 加载原始图片和水印图片...

            // 创建新图片和绘图对象...

            // 绘制水印图片并指定位置
            int watermarkX = newImage.getWidth() - watermarkImage.getWidth();
            int watermarkY = newImage.getHeight() - watermarkImage.getHeight();
            graphics.drawImage(watermarkImage, watermarkX, watermarkY, null);

            // 在这里进行后续步骤...
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上述代码中,我们通过计算水印图片的位置,将水印图片绘制到新图片的右下角。

4. 保存新图片

最后,我们需要将添加了水印的新图片保存到本地。具体代码如下:

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

public class Main {
    public static void main(String[] args) {
        try {
            // 加载原始图片和水印图片...

            // 创建新图片和绘图对象...

            // 绘制水印图片并指定位置...

            // 保存新图片
            File outputFile = new File("output.jpg");
            ImageIO.write(newImage, "jpg", outputFile);

            System.out.println("水印添加完成!");

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

相关推荐

0 条评论