为了在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实现图片加水印效果
基础教程推荐
猜你喜欢
- Java操作MinIO存储服务的API示例 2023-10-08
- 浅谈SpringMVC jsp前台获取参数的方式 EL表达式 2023-07-31
- springboot返回图片流的实现示例 2023-04-12
- Spring纯注解开发模式让开发简化更简化 2023-03-31
- Mybatis-plus多数据源配置的两种方式总结 2023-06-10
- Java实现查找文件和替换文件内容 2023-04-06
- 如何使用Spring MongoTemplate将Java 8 Instant作为日期类型保存到MongoDB? 2023-11-07
- Activiti进阶之组任务实现示例详解 2023-04-17
- java – 如何从XML文件中读取数据并将其存储到数据库(MySQL)中? 2023-11-09
- Java多线程ThreadPoolExecutor详解 2023-04-12