欢迎访问宙启技术站
智能推送

Java函数:如何在图片上添加水印?

发布时间:2023-06-21 14:49:36

在Java中,我们可以使用Java Graphics2D类来添加图片水印。以下是使用Graphics2D类在图片上添加水印的步骤:

1.读取图片:首先,我们需要使用ImageIO.read()方法读取图片,该方法将返回一个BufferedImage对象。

2.创建Graphics2D对象:在此步骤中,我们需要创建一个Graphics2D对象,该对象将用于将水印添加到图像上。

3.设置透明度:在此步骤中,我们需要设置水印的透明度。我们可以使用setComposite()方法和AlphaComposite类来设置透明度。

4.添加水印:在此步骤中,我们需要使用drawString()方法向图像中添加水印。我们可以使用FontMetrics类来确定水印的位置和大小。

5.保存图片:在此步骤中,我们需要使用ImageIO.write()方法将带有水印的图像保存到文件中。

让我们看一些Java代码,以了解如何实现这些步骤:

import java.awt.AlphaComposite;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class ImageWatermark {

   public static void main(String[] args) {
   
      try {
         // 读取原始图像
         File inputFile = new File("original-image.jpg");
         BufferedImage originalImage = ImageIO.read(inputFile);
         
         // 创建 Graphics2D 对象
         Graphics2D g2d = (Graphics2D) originalImage.getGraphics();
         
         // 设置水印透明度
         AlphaComposite alphaComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f);
         g2d.setComposite(alphaComposite);
         
         // 添加水印
         Font font = new Font("Arial", Font.BOLD, 30);
         g2d.setFont(font);
         g2d.drawString("Watermark", 50, 50);
         
         // 保存图像
         File outputFile = new File("watermarked-image.jpg");
         ImageIO.write(originalImage, "jpg", outputFile);
      } catch (Exception ex) {
         System.err.println(ex);
      }
   }
}

在上述代码中,我们首先使用ImageIO.read()方法读取原始图像。然后,我们创建了一个Graphics2D对象,并使用AlphaComposite类设置了水印的透明度。接下来,我们使用drawString()方法添加了一个文字水印。最后,我们使用ImageIO.write()方法将带有水印的图像保存到文件中。

需要注意的是,上述代码只能在Java 2D图形环境下运行。如果您使用的是Swing或AWT应用程序,您需要在AWT事件分派线程中运行此代码。您可以使用以下代码片段来在AWT事件分派线程中运行此代码:

java.awt.EventQueue.invokeLater(new Runnable() {
   public void run() {
      // 添加图像水印
   }
});

为了使水印更加自定义,您可以自定义字体和颜色。例如:

Color color = new Color(255, 255, 255); // 设置为白色
font = new Font("Arial", Font.BOLD, 20);
g2d.setFont(font);
g2d.setColor(color);
g2d.drawString("Watermark", 50, 50);

在上面的代码中,我们使用了setColor()方法将绘图颜色设置为白色,并使用了更小的字体大小。您可以根据自己的需求自由更改这些值。

总之,使用Java Graphics2D类可以轻松地在图片上添加水印。只需根据上述步骤进行操作,您便可以轻松地实现自己的Java图像水印应用程序。