package org.jimmy.autosearch2019.test;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList; import javax.imageio.ImageIO; public class TestMergePic2019080801 { private static final String DIR_PATH = "D:/Document/201908/20190808/Pic/Test/";
private static final String PIC_NAME = "test201908081221";
private static final String MERGED_PIC_PATH = DIR_PATH + "testPic2019080801.png";
private static final String SUFFIX = "png"; public static void main(String[] args) {
test();
} public static ArrayList<File> getAllFiles(String path,String fileName, String suffix, int size) {
ArrayList<File> fileList = new ArrayList<File>();
for(int i = 1; i <= size; i++) {
File file = new File(path + fileName + "_" + i + "." + suffix);
if(file.exists()) {
fileList.add(file);
}
}
return fileList;
} public static void mergeImagetogeter(String path, ArrayList<BufferedImage> picList, String suffix) {
try {
BufferedImage firstImage = picList.get(0);
int w1 = firstImage.getWidth();
int h1 = firstImage.getHeight();
int width = w1;
int height = h1 * picList.size();
BufferedImage newImage = new BufferedImage(width, height, firstImage.getType());
Graphics g = newImage.getGraphics();
int x = 0;
int y = 0;
for(int i = 0; i < picList.size(); i++) {
BufferedImage currentImage = picList.get(i);
y = i * h1;
g.drawImage(currentImage, x, y, w1, h1, null);
}
ImageIO.write(newImage, suffix, new FileOutputStream(path));
g.dispose();
} catch (Exception e) {
System.out.println(e.getMessage());
}
} public static BufferedImage loadImageLocal(String imgName) {
try {
return ImageIO.read(new File(imgName));
} catch (Exception e) {
System.out.println(e.getMessage());
}
return null;
} public static void test() {
ArrayList<BufferedImage> picList = new ArrayList<BufferedImage>();
ArrayList<File> fileList = getAllFiles(DIR_PATH, PIC_NAME, SUFFIX, 52);
for(int i = 0; i < fileList.size(); i++) {
BufferedImage currentPic = loadImageLocal(fileList.get(i).getAbsolutePath());
picList.add(currentPic);
}
mergeImagetogeter(MERGED_PIC_PATH, picList, SUFFIX);
//将多张图片合在一起
System.out.println("Successfully!");
} }

合并前:

效果图:

Java合并png图片的更多相关文章

  1. 合并小图片利器TexturePacker GUI

    合并小图片,能够非常大的节省网络开销.尤其如今的站点非常喜欢使用大量的小图标来做一些友好提示.当然使用图片文字也是一种选择. 只是这里推荐的是TexturePacker GUI ,这个确实是一款利器. ...

  2. Java部分总结图片版2(已加上原图链接!!!)

    Java部分总结图片版2(加上原图链接)

  3. Java部分总结图片版(已经加上原图链接下载!!!)

    Java基础知识图片版(原图下载链接)

  4. opencv java api提取图片sift特征

    opencv在2.4.4版本以后添加了对java的最新支持,可以利用java api了.下面就是我利用opencv的java api 提取图片的sift特征. import org.opencv.co ...

  5. java批量转换图片格式

    废话不多直接上代码,代码其实也不多.... package com.qiao.testImage; import java.awt.image.BufferedImage; import java.i ...

  6. Java处理JPEG图片时,需要导入com.sun.image.codec.jpeg.JPEGImageEn,报错处理

    Java处理JPEG图片时,需要导入com.sun.image.codec.jpeg.JPEGImageEn,会报错,不能使用相应的方法. 原因:java访问限制级api的时候,默认的eclipse设 ...

  7. java中得到图片的宽度 高度:

    java中得到图片的宽度 高度:BufferedImage srcImage = null;srcImage = ImageIO.read(new File(srcImagePath));int sr ...

  8. Ext & Java 上存图片 Demo

    Ext & Java 上存图片 Demo Ext <html> <head> <script id="microloader" type=&q ...

  9. Java如何获取图片验证码保存

    举例网站:https://my.1hai.cn/Login/?url=http://www.1hai.cn/ 一.场景:出于安全性考虑,越来越多的Web平台登录都会增加图形验证码(图片),或者短信验证 ...

随机推荐

  1. docker 搭建本地私有仓库

    1.使用registry镜像创建私有仓库 安装docker后,可以通过官方提供的 registry 镜像来简单搭建一套本地私有仓库环境: docker run -d -p : registry: 这将 ...

  2. CORS(cross-origin-resource-sharing)跨源资源共享

    其实就是跨域请求.我们知道XHR只能访问同一个域中的资源,这是浏览器的安全策略所限制,但是开发中合理的跨域请求是必须的.CORS是W3的一个工作草案,基本思想就是:使用自定义的HTTP头部让浏览器与服 ...

  3. Redis篇之操作、lettuce客户端、Spring集成以及Spring Boot配置

    Redis篇之操作.lettuce客户端.Spring集成以及Spring Boot配置 目录 一.Redis简介 1.1 数据结构的操作 1.2 重要概念分析 二.Redis客户端 2.1 简介 2 ...

  4. 浅谈Java中静态代码块和非静态代码块

    静态代码块: static{} 执行优先级高于非静态的初始化块,它会在类初始化(类初始化这个问题改天再详细讨论)的时候执行一次,执行完成便销毁,它仅能初始化类变量,即static修饰的数据成员. 非静 ...

  5. pyppeteer使用时常见的bug及基本使用(转)

    pyppeteer使用时常见的bug及解决办法: https://blog.csdn.net/Mr__lqy/article/details/102626025 pyppeteer的基本使用: htt ...

  6. springboot项目中thymeleaf布局应用

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...

  7. JVM进阶:JVM的监控利器

    每次聊起性能测试,最后的终极话题就是怎么做优化.其实在Java的复杂项目中都会有内存不足问题.内存泄露问题.线程死锁问题.CPU问题.这些问题在小压力的情况下有可能并不明显,很容易被忽视.但是真正到了 ...

  8. C++ 文件操作 FILE*

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> //编程题:往文件里写入字母表的26个字母. //要求:如果字母对应编码值 是奇数则写 ...

  9. 前后端分离项目采用Prerender的SEO优化流程

    原文: https://blog.ccyws.cn/articles/4 一.概述 近年开发模式变化,新建Web站点采用前后端分离部署已经是大势所趋.但是,搜索引擎爬虫不会执行js脚本从后端加载数据, ...

  10. css中:overflow:hidden清除浮动的原理

    要想彻底清除浮动的影响,适合的属性不是 clear 而是 overflow. 一般使用 overflow:hidden,利用 BFC 的“结界”特性彻底解决浮动对外部或兄弟元素的影响. 1. 前言: ...