java图片添加水印实例代码分享

Java图片添加水印实例代码分享

在Java开发中,我们可能需要将水印添加到图片中,以保护图片的版权或者其他需求。下面是Java图片添加水印的完整攻略。

准备工作

在项目中添加以下依赖:

<dependency>
    <groupId>com.github.vividsolutions</groupId>
    <artifactId>jts</artifactId>
    <version>1.14</version>
</dependency>

<dependency>
    <groupId>com.sun.media</groupId>
    <artifactId>jai_codec</artifactId>
    <version>1.1.3</version>
</dependency>

<dependency>
    <groupId>javax.media</groupId>
    <artifactId>jai_core</artifactId>
    <version>1.1.3</version>
</dependency>

添加图片水印

我们可以通过以下代码将图片添加水印:

public static void addWatermark(File watermarkImageFile, File sourceImageFile,
        File destImageFile, int x, int y, float alpha) throws IOException {

    BufferedImage sourceImage = ImageIO.read(sourceImageFile);
    BufferedImage watermarkImage = ImageIO.read(watermarkImageFile);

    Graphics2D g2d = sourceImage.createGraphics();
    AlphaComposite alphaComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);
    g2d.setComposite(alphaComposite);

    g2d.drawImage(watermarkImage, x, y, null);
    g2d.dispose();

    ImageIO.write(sourceImage, "jpg", destImageFile);
}

以上代码中 watermarkImageFile 是要添加的水印图片,sourceImageFile 是要添加水印的图片,destImageFile 是添加水印后保存的图片文件路径,xy 是水印添加的位置坐标, alpha 是水印的透明度,可根据需要进行调整。

以下是示例代码:

File watermark = new File("watermark.png");
File original = new File("original.jpg");
File result = new File("result.jpg");
addWatermark(watermark, original, result, 10, 10, 0.5f);

添加文本水印

我们可以通过以下代码将文本添加到图片中:

public static void addTextWatermark(File sourceImageFile, File destImageFile,
        String text, String fontName, int fontStyle, Color color, int fontSize,
        int x, int y, float alpha) throws IOException {

    BufferedImage sourceImage = ImageIO.read(sourceImageFile);

    Graphics2D g2d = sourceImage.createGraphics();
    AlphaComposite alphaComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);
    g2d.setComposite(alphaComposite);

    g2d.setColor(color);
    g2d.setFont(new Font(fontName, fontStyle, fontSize));
    g2d.drawString(text, x, y);

    g2d.dispose();

    ImageIO.write(sourceImage, "jpg", destImageFile);
}

以上代码中 sourceImageFile 是要添加水印的图片,destImageFile 是添加水印后保存的图片文件路径,text 是要添加的文本,fontName 是文本的字体名称,fontStyle 是文本的字体样式(例如 Font.BOLD 表示粗体,Font.ITALIC 表示斜体等),color 是文本颜色, fontSize 是字体大小, xy 是文本添加的位置坐标, alpha 是文本的透明度,可根据需要进行调整。

以下是示例代码:

File original = new File("original.jpg");
File result = new File("result.jpg");
addTextWatermark(original, result, "This is a watermark", "Arial", Font.BOLD, Color.WHITE, 20, 10, 10, 0.5f);

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java图片添加水印实例代码分享 - Python技术站

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

相关文章

  • 深入理解java1.8之supplier

    下面是“深入理解java1.8之supplier”的完整攻略。 什么是Supplier Java 8中引入的Supplier表示一个供应商,代表一个函数,这个函数不需要任何输入参数,只返回一个我们定义好的数据类型的输出结果。 该接口定义了一个函数式方法,即get()方法,用于获取输出结果,如下所示: @FunctionalInterface public i…

    Java 2023年5月26日
    00
  • MyBatis-plus+达梦数据库实现自动生成代码的示例

    接下来我将详细讲解如何使用MyBatis-plus和达梦数据库实现自动生成代码的步骤和注意事项。 环境准备 JDK 1.8及以上版本 Maven 3.5及以上版本 Spring Boot 2.x及以上版本 MyBatis-plus 3.x及以上版本 达梦数据库 JDBC 驱动程序 步骤一:添加依赖 首先,在使用 MyBatis-plus 时,需要添加相应的依…

    Java 2023年5月20日
    00
  • Java8新特性之深入解析日期和时间_动力节点Java学院整理

    Java8新特性之深入解析日期和时间_动力节点Java学院整理 为什么需要新的日期和时间API Java早期的日期和时间API出现了很多问题,如: API不一致:Java提供了大量日期和时间API,但它们之间的API不一致,这使得编写日期和时间代码非常困难。 可变性:Java早期的日期和时间API中的大多数类都是可变的,这意味着我们可以随时更改日期和时间,这…

    Java 2023年6月1日
    00
  • 教你使用Java获取当前时间戳的详细代码

    下面是使用Java获取当前时间戳的详细攻略,包含了两个示例。 获取当前时间戳的意义 获取当前时间戳可以在实际开发中应用到很多场景,如: 用于记录日志,记录操作时间 用于计算时间差,比如计算程序执行时间 用于生成唯一ID,保证ID的唯一性 等等 代码实现 Java中可以使用System.currentTimeMillis()方法获取当前系统时间的时间戳,这个方…

    Java 2023年5月20日
    00
  • Java日常练习题,每天进步一点点(41)

    首先我需要说明一下,题目“Java日常练习题,每天进步一点点(41)”是一系列的Java编程练习题。这些练习题旨在帮助Java初学者逐步掌握 Java 编程语言和面向对象的编程思想。 这一系列的练习题包含41道题目,每道题目都是一个小问题,每天完成一道,逐步提高自己的编程能力。 在攻略中,我将解释一下如何通过完成这道题目来练习Java编程,并提高自己的编程技…

    Java 2023年5月23日
    00
  • JVM面试和学习中需要注意的部分

    在学习jvm的时候许多人处于迷茫的状态,对一些基础的知识反而听过就忘了,这篇笔记是我在学习jvm的时候随手记的一些,适合已经学过或者了解过的小伙伴复习回顾一下,当然知识的覆盖是没有的,主要记录了我觉得容易忘记或者记错的知识点,这些有很多是基石知识,希望大家不要忘记,大家看到就当正好复习一下,对大家的面试可能会有一点小小的帮助 内存结构 1.方法区用来存储类加…

    Java 2023年5月8日
    00
  • JavaEE微框架Spring Boot深入解读

    JavaEE微框架SpringBoot深入解读 简介 Spring Boot是一个基于Spring框架的快速应用开发框架,它简化了Spring应用的开发过程,使用起来非常方便,而且能够快速地搭建一个可用的、生产级别的应用程序。 Spring Boot的核心特性 自动配置 在Spring Boot的自动配置下,开发者不需要再手动地为每一个框架、类库引入一个配置…

    Java 2023年5月15日
    00
  • 关于Spring框架中异常处理情况浅析

    关于Spring框架中异常处理情况浅析 异常处理概述 Spring框架在处理异常时,提供了非常灵活且丰富的机制。在Spring中,异常可以被拦截器、切面、异常解析器等进行处理。通过提供自定义的异常类或者异常处理器,我们可以控制异常在Spring中的流传和响应。 Spring异常处理机制 Spring异常处理流程 Spring中的异常处理流程一般为: 抛出异常…

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