java实现图片加水印效果

为了在Java中实现图片加水印效果,需要以下步骤:

为了在Java中实现图片加水印效果,需要以下步骤:

步骤一:导入依赖

需要导入Java Image I/O工具包和Java 2D API工具包的依赖,可在pom.xml文件中添加以下代码:

<dependencies>
   <dependency>
      <groupId>javax.media</groupId>
      <artifactId>jai-core</artifactId>
      <version>1.1.3</version>
   </dependency>
   <dependency>
      <groupId>javax.media</groupId>
      <artifactId>jai-codec</artifactId>
      <version>1.1.3</version>
  </dependency>
</dependencies>

步骤二:读取图片

可以使用ImageIO工具类的read方法读取图片到内存中:

File imageFile = new File("test.jpg");
BufferedImage bufferedImage = ImageIO.read(imageFile);

步骤三:创建水印

在Java中创建水印需要使用Graphics2D类,可以使用以下代码创建一个具有指定长度和宽度的透明图片:

// 创建一个100x30大小的透明图片
BufferedImage image = new BufferedImage(100, 30, BufferedImage.TYPE_INT_ARGB);

// 获取画笔
Graphics2D g2d = image.createGraphics();

// 设置画笔透明度
AlphaComposite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f);
g2d.setComposite(alpha);

// 绘制水印文本
Font font = new Font("Arial", Font.BOLD, 16);
g2d.setFont(font);
g2d.setColor(Color.WHITE);
g2d.drawString("Test watermark", 10, 20);

// 释放资源
g2d.dispose();

步骤四:将水印添加到原始图片中

可以使用以下代码将创建的水印添加到原始图片中:

// 获取原始图片宽度和高度
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();

// 获取水印图片宽度和高度
int watermarkWidth = image.getWidth();
int watermarkHeight = image.getHeight();

// 将水印添加到原始图片中
Graphics2D g2d = bufferedImage.createGraphics();
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
g2d.drawImage(image, width - watermarkWidth - 10, height - watermarkHeight - 10, null);

// 释放资源
g2d.dispose();

示例一:添加文字水印

下面是一个示例,将一个文字水印添加到图片的左上角。

File imageFile = new File("test.jpg");
BufferedImage bufferedImage = ImageIO.read(imageFile);

// 创建一个100x30大小的透明图片
BufferedImage image = new BufferedImage(100, 30, BufferedImage.TYPE_INT_ARGB);

// 获取画笔
Graphics2D g2d = image.createGraphics();

// 设置画笔透明度
AlphaComposite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f);
g2d.setComposite(alpha);

// 绘制水印文本
Font font = new Font("Arial", Font.BOLD, 16);
g2d.setFont(font);
g2d.setColor(Color.WHITE);
g2d.drawString("Test watermark", 10, 20);

// 释放资源
g2d.dispose();

// 获取原始图片宽度和高度
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();

// 获取水印图片宽度和高度
int watermarkWidth = image.getWidth();
int watermarkHeight = image.getHeight();

// 将水印添加到原始图片中
g2d = bufferedImage.createGraphics();
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
g2d.drawImage(image, 10, 10, null);

// 释放资源
g2d.dispose();

// 输出水印后的图片
File output = new File("output.jpg");
ImageIO.write(bufferedImage, "jpg", output);

示例二:添加图片水印

下面是一个示例,将一个图片水印添加到图片的右下角。

File imageFile = new File("test.jpg");
BufferedImage bufferedImage = ImageIO.read(imageFile);

File watermarkFile = new File("watermark.png");
BufferedImage watermarkImage = ImageIO.read(watermarkFile);

// 获取原始图片宽度和高度
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();

// 获取水印图片宽度和高度
int watermarkWidth = watermarkImage.getWidth();
int watermarkHeight = watermarkImage.getHeight();

// 将水印添加到原始图片中
Graphics2D g2d = bufferedImage.createGraphics();
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
g2d.drawImage(watermarkImage, width - watermarkWidth - 10, height - watermarkHeight - 10, null);

// 释放资源
g2d.dispose();

// 输出水印后的图片
File output = new File("output.jpg");
ImageIO.write(bufferedImage, "jpg", output);

这样,我们就可以将制作出来的图片加上水印,并输出到指定的文件中。

本文标题为:java实现图片加水印效果

基础教程推荐