`
yutiansky
  • 浏览: 197502 次
  • 性别: Icon_minigender_1
  • 来自: 本溪
社区版块
存档分类
最新评论

Java合并PNG图像(保持背景透明)

 
阅读更多
import java.awt.Graphics2D;
import java.awt.Transparency;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.imageio.ImageIO;

public class PngFileWriter {

    public void append(List<String> inputFileNameList, String outputFileName, boolean isX) {
        if (inputFileNameList == null || inputFileNameList.size() == 0) {
            return;
        }

        try {
            boolean isFirstPng = true;
            BufferedImage outputImg = null;
            int outputImgW = 0;
            int outputImgH = 0;
            for (String pngFileName : inputFileNameList) {
                if (isFirstPng) {
                    isFirstPng = false;
                    outputImg = ImageIO.read(new File(pngFileName));
                    outputImgW = outputImg.getWidth();
                    outputImgH = outputImg.getHeight();
                } else {
                    BufferedImage appendImg = ImageIO.read(new File(pngFileName));
                    int appendImgW = appendImg.getWidth();
                    int appendImgH = appendImg.getHeight();

                    if (isX) {
                        outputImgW = outputImgW + appendImgW;
                        outputImgH = outputImgH > appendImgH ? outputImgH : appendImgH;
                    } else {
                        outputImgW = outputImgW > appendImgW ? outputImgW : appendImgW;
                        outputImgH = outputImgH + appendImgH;
                    }

                    // create basic image
                    Graphics2D g2d = outputImg.createGraphics();
                    BufferedImage imageNew = g2d.getDeviceConfiguration().createCompatibleImage(outputImgW, outputImgH,
                            Transparency.TRANSLUCENT);
                    g2d.dispose();
                    g2d = imageNew.createGraphics();
                    
                    int oldImgW = outputImg.getWidth();
                    int oldImgH = outputImg.getHeight();
                    g2d.drawImage(outputImg, 0, 0, oldImgW, oldImgH, null);
                    if (isX) {
                        g2d.drawImage(appendImg, oldImgW, 0, appendImgW, appendImgH, null);
                    } else {
                        g2d.drawImage(appendImg, 0, oldImgH, appendImgW, appendImgH, null);
                    }
                    
                    g2d.dispose();
                    outputImg = imageNew;
                }
            }
            writeImageLocal(outputFileName, outputImg);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void writeImageLocal(String fileName, BufferedImage image) {
        if (fileName != null && image != null) {
            try {
                File file = new File(fileName);
                ImageIO.write(image, "png", file);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
 
分享到:
评论

相关推荐

    java合并图像集合

    ### Java合并图像集合 在Java编程语言中,处理图像的操作是一项常见的需求,特别是在涉及图形界面的应用程序中。本文将深入探讨如何使用Java合并图像,并基于提供的代码片段进行详细解析。 #### 1. 导入必要的类库...

    png合并软件有代码

    在IT领域,PNG合并软件是一种实用工具,它允许用户将多个PNG图像文件拼接成一个单一的图片。这种功能在很多场景下都很有用,比如在创建长截图、设计图形、或者整理多张小图片时。"png合并"是这个主题的核心,我们将...

    Java将图片合并为视频

    总结起来,这个Java项目涉及到了多媒体处理、FFmpeg与Java的交互、以及如何在Java中进行图像到视频的转换。通过学习和理解这个项目,你可以掌握Java进行多媒体处理的能力,这对于开发视频编辑、动画制作等应用非常有...

    txt转pdf pdf转png png转pdf 图片水印 源代码

    - 这个转换涉及到PDF中的每一页被解析成一个或多个PNG图像。PDF可能包含矢量图形和文本,转换时需要决定如何适当地转换为像素图像,同时保持清晰度和可读性。Java中,可以使用Apache PDFBox或PDFtoImage库来完成这...

    Java图像处理源码

    在Java编程语言中,图像处理是一项重要的任务,尤其在创建应用程序、游戏或Web服务时,可能需要对图像进行各种操作,如转换、编辑、合并或添加水印。本压缩包包含的源码专注于处理TIFF(Tagged Image File Format)...

    java gif动画转png

    4. **合并PNG帧**:如果需要将所有PNG帧合成为一张静态图片,可以使用`BufferedImage`的`Graphics2D`子类来绘制每一帧,最后保存为单个PNG。 ```java BufferedImage combinedImage = new BufferedImage(width, ...

    解决java压缩图片透明背景变黑色的问题

    在Java编程中,处理图像是一项常见的任务,尤其是在开发需要处理用户上传图片的Web应用或移动应用时。然而,处理带有透明背景的...遵循这些原则,可以确保在Java中处理透明背景的PNG图片时,透明部分得到正确的保留。

    java:图片列表合并转pdf完整示例

    在Java编程环境中,将图片列表合并转换为PDF文档是一项常见的任务,特别是在报告生成、文档整理或数据可视化等场景。这个示例将详细讲解如何通过Java实现这一功能,包括必要的库引用、代码实现以及可能遇到的问题。 ...

    java生成透明图片

    在实际应用中,你可能会需要更复杂的操作,比如读取现有的图片并添加透明层,或者将多个图像合并成一张带有透明背景的图片。这些都可以通过`Graphics2D`的绘图方法实现。 在给出的标签"源码"和"工具"中,我们可以...

    利用java实现二维码和背景图的合并

    在Java编程中,合并二维码与背景图片是一项常见的需求,尤其在制作宣传海报或者产品标签时。本篇文章将详细介绍如何使用Java来实现这个功能。首先,我们需要理解Java的图像处理API,主要包括`java.awt.image....

    JAVA 在图像处理中的应用

    本文将重点探讨Java在图像处理中的应用,通过分析提供的"PSDReader.java"源码,我们可以深入理解Java如何处理图像,特别是对Photoshop的PSD文件格式的支持。 在Java中,进行图像处理主要依赖于Java的`java.awt`和`...

    Android-gif2png是一个GIF转换PNG的Java程序(转换为一张大图或者连续帧

    - 对于转换为单张大图,它会将所有帧合并成一个大的PNG图像,通常适用于静态展示或预览。 - 对于转换为连续帧的PNG序列,每一帧都会被保存为单独的PNG文件,便于在Android应用中逐帧加载和播放。 4. **如何使用...

    java 图像处理

    8. 图像合成:合并多个图像或图像的一部分,如层叠效果、透明度调整等。 在实际开发中,开发者可以根据项目需求选择合适的图像处理库。对于简单的图像展示和基本操作,Java AWT和Swing可能就足够了;而对于复杂的...

    java 实现 JPG图像文件转换TIFF文件 有源码。有工程

    在IT行业中,图像处理是一项重要的任务,...总之,Java结合适当的库,如TwelveMonkeys,可以提供强大的图像处理能力,包括JPG到TIFF的转换和TIFF图像的合并。理解和应用这些知识可以增强你在图像处理领域的专业技能。

    bmp,jpg,png,gif图像相互转换

    PNG是一种无损压缩的图像格式,支持透明度,并且有多种压缩级别。PNG-8支持256色,适合简单图形;PNG-24则支持24位真彩色,适合高质量的图像。PNG因其特性,常用于网页设计和需要透明效果的图像。 4. GIF...

    PNGHandler.zip_ PNGHandler_PNGHandl_PNGHandler_png

    在保存时,需要考虑保持原有的PNG图像的透明度信息,因此在合并过程中处理透明度是至关重要的。 除了基本的拼接功能,PNGHandler可能还提供了一些额外的特性,比如预览合并效果、支持自定义模板、调整图像边距、...

    数字图像处理-Java语言算法描述.zip

    在数字图像处理领域,Java语言由于其跨平台性、丰富的库支持和强大的性能,成为实现图像处理算法的常用工具。本资源"数字图像处理-Java语言算法描述.zip"包含了一系列关于如何使用Java来实现数字图像处理算法的详细...

    Java数次图像处理

    1. **读取和写入图像**:ImageIO类提供了read()和write()方法,可以用来读取JPEG、PNG、GIF等多种格式的图像,并将其保存为文件。 2. **颜色模型转换**:Java支持RGB、CMYK、灰度等多种颜色模型,可以使用Color类的...

    图像合并,可以实现多张图片快速合并一一张

    - **简单叠加**:将图片按照指定位置堆叠在一起,适用于背景透明或单一的图片。 - **重叠融合**:通过调整透明度或者混合模式,使图片相互融合,创造出新的视觉效果。 - **拼接**:横向或纵向将图片排列,常用于...

    代码用到的几个png图片啦

    1. 图像处理库:为了在代码中操作PNG图像,通常需要使用图像处理库,如Python的PIL(Pillow)库,Java的ImageIO类,或JavaScript的sharp、pngjs等库。这些库提供了读取、写入、编辑和转换图像的功能。 2. 数据编码...

Global site tag (gtag.js) - Google Analytics