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日

相关文章

  • SpringMVC HttpMessageConverter报文信息转换器

    SpringMVC中的HttpMessageConverter负责将请求报文或响应结果转换成Java对象或字符串,以便更方便地处理HTTP请求与响应。在使用SpringMVC时,理解并熟练使用HttpMessageConverter是必不可少的。 下面是使用HttpMessageConverter进行报文信息转换的完整攻略: 1. 什么是HttpMessag…

    Java 2023年5月26日
    00
  • ASP.NET MVC5网站开发之展示层架构(五)

    让我详细讲解一下“ASP.NET MVC5网站开发之展示层架构(五)”这篇文章的内容吧。 首先,本文介绍的是ASP.NET MVC5网站开发中的展示层架构,包括视图模型、部分视图、视图组件等内容。下面我将分步骤介绍它们的具体实现。 一、视图模型 视图模型是指为视图展示所需数据和控制信息的一种模型。在ASP.NET MVC5中,我们通常使用ViewModel来…

    Java 2023年5月19日
    00
  • java生成图片验证码功能

    下面是详细讲解”Java生成图片验证码功能”的完整攻略: 1. 确定需求 首先,我们需要明确这个功能的需求,即在Java Web应用中生成一个随机的图片验证码,以用于用户填写和校验,防止机器人攻击或恶意提交。 2. 添加依赖 接下来,我们需要添加相关的依赖。Java中生成图片验证码需要用到jcaptcha这个开源工具包,我们可以在pom.xml中添加它的依赖…

    Java 2023年6月15日
    00
  • 一篇文章带你深入了解Java线程池

    一篇文章带你深入了解Java线程池 什么是线程池? 线程池是一个线程队列管理器,大大提高了多线程的处理效率。在开发中使用线程池可以避免多次创建和销毁线程带来的性能开销,提高程序的稳定性和性能表现。 Java中的线程池 Java中的线程池是由ThreadPoolExecutor和Executors来实现的,其中Executors是一个线程池的工厂类,提供了很多…

    Java 2023年5月18日
    00
  • 解析Java的Spring框架的基本结构

    下面是详细讲解“解析Java的Spring框架的基本结构”的攻略: 1. Spring框架的基本结构 Spring框架是一个基于Java的轻量级开源框架,开发者可以使用它开发企业级应用程序。 Spring框架基于IoC(控制反转)和AOP(面向切面编程)设计,提供了使用Java编写应用程序的框架,并减少了业务代码和底层代码之间的耦合。 Spring框架由以下…

    Java 2023年5月19日
    00
  • 详解SpringBoot实现JPA的save方法不更新null属性

    下面我将详细讲解如何实现SpringBoot的JPA的save方法不更新null属性的方法: 问题描述 使用SpringBoot中JPA进行开发时,对于已经存在的实体对象进行更新操作时,如果实体对象中有一些属性值为null,那么在执行save()方法时,JPA会自动将这些属性更新为null,但是我们有时候并不希望这样,我们希望保留原来已经存在的值,仅仅修改非…

    Java 2023年5月20日
    00
  • Java实现有限状态机的推荐方案分享

    Java 实现有限状态机的推荐方案分享 有限状态机(Finite State Machine,FSM)是一种计算模型,它可以使用有限个状态和它们之间的转移,来描述一个系统在不同状态下的行为。在软件开发中,常常需要使用有限状态机来解决复杂问题,比如网络协议解析、报文处理、游戏逻辑等。 本文将介绍 Java 实现有限状态机的一些推荐方案,并提供了两条示例说明,供…

    Java 2023年5月26日
    00
  • JSP获取服务器时间以倒计时的形式在页面显示

    请看以下步骤和示例。 步骤1:创建jsp页面 首先,需要创建一个jsp页面来显示倒计时的效果。在该页面中,我们需要先声明引入Javascript和JQuery库。 <%@ page language="java" contentType="text/html;charset=UTF-8" %> <ht…

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