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实现图片加水印效果 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Java 梳理总结关于static关键字常见问题

    下面是关于Java中static关键字常见问题的梳理总结及示例说明: 一、static关键字的作用 在Java中,静态关键字static可以用于修饰类、方法和变量,使用静态关键字可以实现以下功能: 静态变量:静态变量是指在类加载过程中就被创建出来,与类本身相关联的变量,用static关键字修饰。由于静态变量在类加载时就已经创建,所以可以通过类名直接访问。 静…

    Java 2023年5月26日
    00
  • java.lang.Runtime.exec的左膀右臂:流输入和流读取详解

    Java提供了Runtime.exec()方法来启动一个新进程。该方法可以返回Process对象,通过该对象可以控制和管理子进程的输入、输出以及错误流。这个方法中的参数是一个字符串,它描述了一个shell命令,应该如何来运行这个新的子进程。 为了更好地使用exec()方法,在使用exec()的时候,我们应该学会: 1.正确处理进程输出 2.合并输出流,正确地…

    Java 2023年5月26日
    00
  • Tomcat 类加载器的实现方法及实例代码

    Tomcat 是一款使用 Java 语言开发的开源 Web 服务器,它采用了各种技术实现了高效地处理 Web 请求和 Web 应用的能力。其中,Tomcat 类加载器是 Tomcat 系统中的一个重要组件,主要负责负责动态增加或删除各个 Web 应用的类库,为其中运行的代码提供类加载服务。下面,我们将详细讲解 Tomcat 类加载器的实现方法及实例代码。 T…

    Java 2023年6月15日
    00
  • 用Java进行zip文件压缩与解压缩

    当需要压缩或解压缩文件时,可以使用Java内置库中的ZipFile和ZipEntry类。以下是用Java进行zip文件压缩和解压缩的完整攻略,包含了两个示例。 一、压缩文件 可以使用Java的ZipOutputStream类进行文件压缩,下面是使用ZipOutputStream压缩文件的示例: import java.io.FileOutputStream;…

    Java 2023年5月20日
    00
  • Oracle JDBC连接BUG解决方案

    下面是详细的“Oracle JDBC连接BUG解决方案”的攻略。 问题描述 使用Java程序连接Oracle数据库时,经常会遇到连接时出现“ORA-12519, TNS:no appropriate service handler found”的错误提示,造成无法连接数据库的情况。这个问题一般出现在高并发的情况下。 原因分析 这个问题的产生是由于Oracle…

    Java 2023年5月23日
    00
  • JSP errorPage设置方法

    当在JSP页面中发生错误的时候,可以通过errorPage设置指定的错误页面来处理异常,下面是JSP errorPage设置方法的完整攻略。 1. errorPage设置方法介绍 在JSP页面中设置错误页面有两种方式,分别是: 通过page指令设置errorPage属性; 在web.xml文件中配置<error-page>元素。 1.1 通过pa…

    Java 2023年6月15日
    00
  • java如何让带T的时间格式化

    下面是关于 Java 如何让带 T 的时间格式化的完整攻略。 1. 问题背景 在一些时间格式化场景中,我们常常会见到带 T 的时间格式,例如 2022-07-01T13:45:30+08:00。这种时间格式带有时区信息,是 ISO 8601 标准中定义的格式。但是,Java 默认的日期时间格式化器并不支持这种格式的时间格式化,因此我们需要进行一些额外的操作来…

    Java 2023年5月20日
    00
  • java8、jdk8日期转化成字符串详解

    Java 8/JDK 8 日期转化成字符串详解 在 Java 8/JDK 8 中,我们有多种选择将日期转化成字符串。本篇文章将会详细讲解一些转化日期的方法。 SimpleDateFormat SimpleDateFormat 是 Java 中一个比较常见的日期格式化工具。使用 SimpleDateFormat 可以将 Date 对象格式化成字符串,也可以将字…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部