`

Java水印工具类

 
阅读更多

前一段时间在工作中遇到了一个水印功能,即对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图片加水印工具类

    这个“java图片加水印工具类”正是为了简化这一过程而设计的,它允许开发者通过调用预定义的方法,快速地在图片上添加文字或图形水印,无需每次都手动编写相同的功能代码。 首先,我们需要了解什么是水印。水印通常...

    java对图片添加水印的工具类

    添加文字水印的工具类,自己去下JAR包,MAVEN的网站http://mvnrepository.com/

    图片水印添加工具类 ImageRemark.java

    图片水印添加工具类 ImageRemark.java,可以添加文字水印,图片水印,定制化参数,可以满足各种图片水印的添加

    ffmpeg java 封装工具类,音视频处理.zip

    本压缩包提供的"ffmpeg java 封装工具类"正是为了解决这个问题,它将FFmpeg的功能与Java编程语言相结合,提供了一套易于使用的API。 一、FFmpeg Java 封装工具类介绍 这个工具类通常包括以下核心功能: 1. **命令...

    java水印功能通用类

    综上所述,"java水印功能通用类"是一个旨在简化水印添加过程的工具,它封装了复杂的图像处理逻辑,使得开发者能够更专注于业务逻辑,而不是底层实现。通过理解和运用这个类库,你可以轻松地在你的Java应用程序中集成...

    java生成pdf工具类

    这个工具类的创建可以帮助开发者更高效地实现PDF的生成,包括分页输出和添加水印等功能。 首先,我们需要了解Itext库的基本概念。Itext提供了一系列的API,可以方便地创建PDF对象,如页面、段落、表格、图像等。在...

    图片水印工具类.zip

    这个名为"图片水印工具类.zip"的压缩包包含了两个Java类文件:ImageMarkLogoByIcon.java和ImageMarkLogoByText.java,它们显然是用于在图片上添加水印的工具类。接下来,我们将深入探讨图片水印的基本概念、实现方法...

    java操作图片的工具类

    java操作图片的工具类,包括图片放大缩小、图片裁剪、打水印(文字水印和图片水印)

    Aspose for Java 去除水印和数量限制

    Aspose for Java提供了API来访问和操作这些元素,例如`Paragraph`、`Character`、`Shape`等类,允许开发者精确地找到并移除水印。 至于数量限制,免费版本的Aspose for Java可能限制了单次处理文件的数量或者在一定...

    java给图片添加水印

    2. **创建水印工具类**:创建一个名为`WatermarkUtils`的Java类,包含添加文字水印和图片水印的方法。 - **添加文字水印**:首先读取原始图片,然后创建一个含有文字的透明图像(水印),设置合适的字体、颜色、...

    java 水印测试工具 解压后,执行java -jar 

    Java水印测试工具是一种用于在图像上添加水印的实用程序,主要应用于软件测试和版权保护。这个工具可能由Java编程语言编写,因此其可移植性强,能在多种操作系统上运行,如Windows、Linux和Mac OS。`java -jar`命令...

    java图片处理工具类

    在Java编程语言中,处理图片是一项常见的任务,尤其在网页开发、移动应用或者图形用户界面设计中。本篇文章将深入探讨如何使用Java...通过深入理解这些技术,我们可以创建出强大的图片处理工具类,满足日常开发需求。

    aspose生成word、转pdf的java工具类

    7. **无水印、无广告**:这意味着这个工具类没有嵌入任何Aspose的试用版水印或广告,可能是一个已购买的商业版本或者是定制开发的,因此在生成的文档和PDF中不会出现任何干扰元素。 8. **集成到项目**:在实际项目...

    java生成水印图片

    在Java中,我们可以使用`BufferedImage`类来读取和操作图像,使用`Graphics2D`接口来绘制文字或图形,也就是我们的水印。 1. **读取图片**:使用`ImageIO.read()`方法从文件或流中读取图片,将其转换为`...

    java操作水印的jar包

    在Java中,可以使用`Font`类创建自定义字体,`Color`类调整颜色,以及`AffineTransform`处理旋转、缩放等效果。 6. **性能优化**: 当处理大量文件时,性能优化至关重要。可以使用多线程并行处理文件,或者预先...

    gif 添加水印工具类

    https://my.oschina.net/ydsakyclguozi/blog/748527

    java 水印图片

    在提供的"水印jar包"中,很可能包含了已经封装好的Java类和方法,用于快速实现上述功能。使用这个库,你可以更便捷地在代码中调用水印和条形码生成功能,而无需从零开始编写所有图像处理逻辑。只需按照库的文档指示...

    aspose Java版本去水印 word excel ppt 转PDF文件

    在现代的Java开发环境中,这通常通过Maven或Gradle等构建工具来完成。在提供的`pom文件.txt`中,可以看到如何配置Maven依赖以引入Aspose for Java。Maven的依赖项可能如下所示: ```xml <groupId>...

    java图片附加水印源码

    在这个Java实现中,`WaterMarkUtil.java`很可能是核心类,它可能包含了添加水印的逻辑,包括创建一个`Graphics2D`对象,设置字体、颜色、透明度等属性,然后在原始图像上绘制水印。 3. **透明度设置**:在Java中,...

Global site tag (gtag.js) - Google Analytics