前一段时间在工作中遇到了一个水印功能,即对JPEG图片添加水印(其它文件格式有待测试)。另外,这个工具只是记录下实现过程,并没有做复杂的封装。
希望对看到的人有所帮助,也希望大家多提建议。
public class ImageAddWaterMark {
public static void main(String[] args) {
File originImgFile = new File("D:/originImage.jpg");
File watermarkImgFile = new File("D:/watermarkImage.jpg");
File targetImgFile = new File("D:/targetImage.jpg");
addWatermark(originImgFile,watermarkImgFile,targetImgFile);
}
/**
* 图片上加水印
* @param originImgFile 原图
* @param watermarkImgFile 水印图
* @param targetImgFile 输出文件
*/
public static File addWatermark(File originImgFile,File watermarkImgFile,File targetImgFile){
FileOutputStream fileOutputStream = null;
try {
//原图
Image originImage = ImageIO.read(originImgFile);
int originWidth = originImage.getWidth(null);//原图长
int originHeight = originImage.getHeight(null);//原图宽
//表示一个图像,它具有合成整数像素的 8位 RGB颜色分量.(以原图的长宽作为新图片的长宽)
BufferedImage image = new BufferedImage(originWidth,originHeight,BufferedImage.TYPE_INT_RGB);
Graphics g = image.createGraphics();//获取Graphics以渲染BufferedImage
g.drawImage(originImage,0,0,originWidth,originHeight,null);//从渲染原图
//水印图
Image waterMarkImage = ImageIO.read(watermarkImgFile);
int waterMarkWidth = waterMarkImage.getWidth(null);//水印图长
int waterMarkHeight = waterMarkImage.getHeight(null);//水印图宽
//在原图指定位置渲染水印图(此处设置为右下角)
g.drawImage(waterMarkImage,(originWidth-waterMarkWidth),(originHeight-waterMarkHeight),waterMarkWidth,waterMarkHeight,null);
//释放此图形的上下文以及它使用的所有系统资源
g.dispose();
ImageWriter imgWrier = ImageIO.getImageWritersByFormatName("jpg").next();
imgWrier.reset();
fileOutputStream = new FileOutputStream(targetImgFile);//目标文件
imgWrier.setOutput(ImageIO.createImageOutputStream(fileOutputStream));
//IIOImage:聚集图像、缩略(预览)图像集和表示与图像关联的元数据对象的简单容器类
imgWrier.write(new IIOImage(image,null,null));
fileOutputStream.flush();
return targetImgFile;
}catch(Exception e){
e.printStackTrace();
}finally {
try{
if(fileOutputStream!=null) fileOutputStream.close();
}catch(Exception e){
e.printStackTrace();
}
}
return null;
}
}
分享到:
相关推荐
这个“java图片加水印工具类”正是为了简化这一过程而设计的,它允许开发者通过调用预定义的方法,快速地在图片上添加文字或图形水印,无需每次都手动编写相同的功能代码。 首先,我们需要了解什么是水印。水印通常...
添加文字水印的工具类,自己去下JAR包,MAVEN的网站http://mvnrepository.com/
图片水印添加工具类 ImageRemark.java,可以添加文字水印,图片水印,定制化参数,可以满足各种图片水印的添加
本压缩包提供的"ffmpeg java 封装工具类"正是为了解决这个问题,它将FFmpeg的功能与Java编程语言相结合,提供了一套易于使用的API。 一、FFmpeg Java 封装工具类介绍 这个工具类通常包括以下核心功能: 1. **命令...
综上所述,"java水印功能通用类"是一个旨在简化水印添加过程的工具,它封装了复杂的图像处理逻辑,使得开发者能够更专注于业务逻辑,而不是底层实现。通过理解和运用这个类库,你可以轻松地在你的Java应用程序中集成...
这个工具类的创建可以帮助开发者更高效地实现PDF的生成,包括分页输出和添加水印等功能。 首先,我们需要了解Itext库的基本概念。Itext提供了一系列的API,可以方便地创建PDF对象,如页面、段落、表格、图像等。在...
这个名为"图片水印工具类.zip"的压缩包包含了两个Java类文件:ImageMarkLogoByIcon.java和ImageMarkLogoByText.java,它们显然是用于在图片上添加水印的工具类。接下来,我们将深入探讨图片水印的基本概念、实现方法...
java操作图片的工具类,包括图片放大缩小、图片裁剪、打水印(文字水印和图片水印)
2. **创建水印工具类**:创建一个名为`WatermarkUtils`的Java类,包含添加文字水印和图片水印的方法。 - **添加文字水印**:首先读取原始图片,然后创建一个含有文字的透明图像(水印),设置合适的字体、颜色、...
Java水印测试工具是一种用于在图像上添加水印的实用程序,主要应用于软件测试和版权保护。这个工具可能由Java编程语言编写,因此其可移植性强,能在多种操作系统上运行,如Windows、Linux和Mac OS。`java -jar`命令...
Aspose for Java提供了API来访问和操作这些元素,例如`Paragraph`、`Character`、`Shape`等类,允许开发者精确地找到并移除水印。 至于数量限制,免费版本的Aspose for Java可能限制了单次处理文件的数量或者在一定...
在Java编程语言中,处理图片是一项常见的任务,尤其在网页开发、移动应用或者图形用户界面设计中。本篇文章将深入探讨如何使用Java...通过深入理解这些技术,我们可以创建出强大的图片处理工具类,满足日常开发需求。
7. **无水印、无广告**:这意味着这个工具类没有嵌入任何Aspose的试用版水印或广告,可能是一个已购买的商业版本或者是定制开发的,因此在生成的文档和PDF中不会出现任何干扰元素。 8. **集成到项目**:在实际项目...
在Java中,我们可以使用`BufferedImage`类来读取和操作图像,使用`Graphics2D`接口来绘制文字或图形,也就是我们的水印。 1. **读取图片**:使用`ImageIO.read()`方法从文件或流中读取图片,将其转换为`...
在Java中,可以使用`Font`类创建自定义字体,`Color`类调整颜色,以及`AffineTransform`处理旋转、缩放等效果。 6. **性能优化**: 当处理大量文件时,性能优化至关重要。可以使用多线程并行处理文件,或者预先...
https://my.oschina.net/ydsakyclguozi/blog/748527
在提供的"水印jar包"中,很可能包含了已经封装好的Java类和方法,用于快速实现上述功能。使用这个库,你可以更便捷地在代码中调用水印和条形码生成功能,而无需从零开始编写所有图像处理逻辑。只需按照库的文档指示...
在现代的Java开发环境中,这通常通过Maven或Gradle等构建工具来完成。在提供的`pom文件.txt`中,可以看到如何配置Maven依赖以引入Aspose for Java。Maven的依赖项可能如下所示: ```xml <groupId>...
在这个Java实现中,`WaterMarkUtil.java`很可能是核心类,它可能包含了添加水印的逻辑,包括创建一个`Graphics2D`对象,设置字体、颜色、透明度等属性,然后在原始图像上绘制水印。 3. **透明度设置**:在Java中,...