Java合并png图片
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图片的更多相关文章
- 合并小图片利器TexturePacker GUI
合并小图片,能够非常大的节省网络开销.尤其如今的站点非常喜欢使用大量的小图标来做一些友好提示.当然使用图片文字也是一种选择. 只是这里推荐的是TexturePacker GUI ,这个确实是一款利器. ...
- Java部分总结图片版2(已加上原图链接!!!)
Java部分总结图片版2(加上原图链接)
- Java部分总结图片版(已经加上原图链接下载!!!)
Java基础知识图片版(原图下载链接)
- opencv java api提取图片sift特征
opencv在2.4.4版本以后添加了对java的最新支持,可以利用java api了.下面就是我利用opencv的java api 提取图片的sift特征. import org.opencv.co ...
- java批量转换图片格式
废话不多直接上代码,代码其实也不多.... package com.qiao.testImage; import java.awt.image.BufferedImage; import java.i ...
- Java处理JPEG图片时,需要导入com.sun.image.codec.jpeg.JPEGImageEn,报错处理
Java处理JPEG图片时,需要导入com.sun.image.codec.jpeg.JPEGImageEn,会报错,不能使用相应的方法. 原因:java访问限制级api的时候,默认的eclipse设 ...
- java中得到图片的宽度 高度:
java中得到图片的宽度 高度:BufferedImage srcImage = null;srcImage = ImageIO.read(new File(srcImagePath));int sr ...
- Ext & Java 上存图片 Demo
Ext & Java 上存图片 Demo Ext <html> <head> <script id="microloader" type=&q ...
- Java如何获取图片验证码保存
举例网站:https://my.1hai.cn/Login/?url=http://www.1hai.cn/ 一.场景:出于安全性考虑,越来越多的Web平台登录都会增加图形验证码(图片),或者短信验证 ...
随机推荐
- Python 绘图 - Bokeh 柱状图小试(Stacked Bar)
背景 在 Bokeh 初探之后,学习使用它来做个图 目标 做一个柱状图,支持多个 y 数据源,即有堆叠效果的柱状图 stacked bar 实现 单数据源 简单的柱状图 参考 Handling Cat ...
- 为什么要使用webpack?
在网页中会引用到哪些常见的静态资源? js (.js .jsx .coffee .ts) css (.css .less .sass .scss scss是sass的plus版) imag ...
- elasticsearch 创建索引
一.基本概念 索引:含有相同属性的文档的集合. //可以想象成一个数据库 database 类型:索引可以定义一个或多个类型,文档必须属于一个类型. //可以想象成数据库中的表 table 文档:文档 ...
- XCTF---easyjni的WriteUp
一.题目来源 题目来源:XCTF的mobile区的easyjni题目. 题目下载地址:题目链接地址 二.解题过程 1.下载好题目后,安装到夜神模拟器中,发现有一个输入框和一个按 ...
- java 发送邮件详细讲解
一.JavaMail概述: JavaMail是由Sun定义的一套收发电子邮件的API,不同的厂商可以提供自己的实现类.但它并没有包含在JDK中,而是作为JavaEE的一部分. 厂商所提供 ...
- 免ROOT卸载手机自带软件详细教程
一.准备条件 1.电脑一台 2.手机一部 3.WiFi 二.下载所需资源 微信扫码进入搜索,选择安卓软件卸载工具 根据图中提示,按照自己的系统进行下载 三.下载完后解压(以Windows为例),解压后 ...
- elementui 在原生方法参数里,添加参数
公司有个项目需求需要在一个列表中分别上传图片,饿了么的方法不支持传递index,可以这样传递: :on-change="(file,fileList)=>{return changeF ...
- Simulink仿真入门到精通(十六) Simulink基于模型设计的工业应用概述
16.1 Simulink用途概述 在基于模型设计广泛应用于汽车电子嵌入式开发的今天,MBD(Model Besed Design)技术也逐步推广到各种嵌入式控制方面.与传统的嵌入式开发相比,BMD以 ...
- c js 字符串反转
1.例如:输入 i am a student 输出 student a am i #include <stdio.h> #include <string.h> v ...
- vue之冒泡阻止
用了Element ui写页面 <el-dropdown-menu slot="dropdown"> <el-dropdown-item> <el-s ...