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. java线程间的共享

    本次内容主要讲synchronized.volatile和ThreadLocal. 1.synchronized内置锁 线程开始运行,拥有自己的栈空间,就如同一个脚本一样,按照既定的代码一步一步地执行 ...

  2. Redis(6)——GeoHash查找附近的人

    像微信 "附近的人",美团 "附近的餐厅",支付宝共享单车 "附近的车" 是怎么设计实现的呢? 一.使用数据库实现查找附近的人 我们都知道, ...

  3. 基于Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度学习环境

    基于Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度学习环境 前言一.环境准备环境介绍软件下载VMware下安装UbuntuUbuntu下Anaconda的安 ...

  4. SpringBoot框架——从SpringBoot看IoC容器初始化流程之方法分析

    目录 一.概观Spring Boot 二.Spring Boot应用初始化 2.1 初始化入口 2.2 SpringApplication的run方法 2.3 方法分析 三.容器创建与初始化 3.1 ...

  5. 网络工程师和Linux运维工程师有什么区别?学哪个比较好?

    网络工程师和Linux运维工程师有什么区别?学哪个比较好? 机缘巧合下,我进入了一家从事vpn与系统集成的公司,很感谢公司能留下我这个非网络工程专业的毕业生,从对网络一窍不通,慢慢可以自己独立完成工作 ...

  6. vscode配置里关于 eslint配置不要有 "eslint.alwaysShowStatus": true

    "eslint.autoFixOnSave": true, "eslint.validate": [ "javascript", " ...

  7. C/C++书籍分享(百度网盘版)

    作为第一篇博客,该写一些什么好呢,毕竟作为技术博客开创的,不能随便闲谈不是. 那就分享一些书籍作为见面礼吧.链接里面包含有大量的C++学习用书籍,包含了从入门到进阶的大部分高质量书籍,注意仅用作个人学 ...

  8. mysql & Tomcat使用问题记录

    mysql使用问题记录 1.mysql如何修改root密码 a.进入mysql安装目录b.登录 mysql -u root -pc.修改密码 mysql> SET PASSWORD FOR ro ...

  9. python函数版ATM

    最近系统的学习python函数知识点,感觉在面向对象之前,函数的功能确实强大. 最近使用函数写了ATM项目,虽然需求简单但也有很多知识点需要注意,这个项目把python基础的很多知识点都用上了. 前前 ...

  10. spring给容器中注入组件的几种方式

    目录 环境搭建 spring给容器中注入组件 1.包扫描+组件标注注解(@Controller/@Service/@Repository/@Component)适用于把自己写的类加入组件(默认ID类名 ...