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日

相关文章

  • ajax遍历xml文档的方法

    当需要在网页中展示和操作XML文档时,可以使用ajax来进行操作。以下是ajax遍历XML文档的方法总结: 1. 创建XMLHttpRequest对象 要使用ajax技术,必须创建XMLHttpRequest对象。XMLHttpRequest是浏览器提供的一个对象用来在浏览器和服务器之间进行数据传输。 //创建XMLHttpRequest对象 let xht…

    Java 2023年5月19日
    00
  • Java 创建线程的两个方法详解及实例

    Java 创建线程的两个方法详解及实例 在 Java 中,创建线程有两种方法,一种是继承Thread类,另一种是实现Runnable接口。本文将详细介绍这两种方法并提供示例代码。 1. 继承Thread类 继承Thread类是一种创建线程的简单方法,只需要继承Thread类并重写run方法即可。 示例代码: public class MyThread ext…

    Java 2023年5月18日
    00
  • Java实战玩具商城的前台与后台实现流程

    Java实战玩具商城的前台与后台实现流程 概述 Java实战玩具商城的前台与后台实现流程主要分为以下几步: 前端页面设计:设计商城的页面布局和逻辑,并使用HTML、CSS和JavaScript等技术实现页面的交互效果。 后台架构设计:设计商城的后台架构,包括实现分布式服务、数据库设计、接口设计等。 业务逻辑实现:根据商城运营需求,实现各项业务逻辑,包括商品管…

    Java 2023年5月26日
    00
  • &#是什么编码 unicode两种编码方式与中文的转换

    编码是将某种信息从一种形式转换为另一种形式的过程。在HTML、XML等文档中,如果想要输入一些特殊字符,例如空格、小于号、大于号等,就需要使用特殊字符实体来代替这些字符。其中,&#是一种十进制字符编码方式。 Unicode是计算机科学领域中的一种字符编码,它将字符与二进制进行映射。Unicode中每个字符都有一个唯一的编码。常见的Unicode编码有…

    Java 2023年5月20日
    00
  • Java(TM) Platform SE binary 打开jar文件的操作

    首先我们需要了解一下什么是Java(TM) Platform SE binary。它是Java平台标准版二进制文件的名称,也就是我们常说的JRE(Java Runtime Environment)。JRE是Java程序运行的环境,如果我们要打开.jar文件,则需要在拥有JRE的环境下进行操作。 下面是通过Java(TM) Platform SE binary…

    Java 2023年5月26日
    00
  • 微信小程序实现日期格式化

    下面我将详细讲解微信小程序实现日期格式化的完整攻略。 一、需求分析 在实际开发中,我们通常需要将日期格式化为特定的字符串格式,以便于展示给用户。比如,将 “2022/02/22 22:22:22” 格式化为 “2022年2月22日 22时22分22秒”。 微信小程序提供了 Date 对象来处理日期,但是该对象没有提供日期格式化的方法。因此,我们需要自己来实现…

    Java 2023年5月23日
    00
  • 最终幻想14白魔学者常用宏大全

    最终幻想14(Final Fantasy XIV)是一个非常经典的MMORPG游戏,其中白魔学者是非常重要的职业之一。使用宏可以大大增强玩家的游戏体验和提高游戏效率。在本篇攻略中,我们将介绍一些白魔学者常用的宏。 宏的概念及使用方法 宏是一种由玩家自定义的命令组合。玩家可以将多个命令组合成一个宏,并通过一个按键或鼠标点击来执行这个宏。使用宏可以让玩家快速执行…

    Java 2023年6月15日
    00
  • java语言中封装类代码示例

    封装是Java中的一种特性,它将数据和方法作为一个整体封装在一个类中,从而实现了对象的封装和保护。在Java中,我们可以使用封装类来完成一些复杂数据类型的封装。下面是Java语言中封装类的代码示例攻略: 1. 创建封装类 创建一个封装类的关键在于定义一个类,并在类中定义私有变量和公有方法。私有变量可以通过公有方法来获取或修改。以下是一个简单的封装类示例: p…

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