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平台登录都会增加图形验证码(图片),或者短信验证 ...
随机推荐
- 没想到MySQL还会问这些...
前言 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 在前一阵子,大哥问过我:"你知道MySQL的原子性是怎么保 ...
- es6的解构函数
话说,解构无处不在啊,鄙人自从用了vue写项目以来,总是遇到各路大神莫名其妙的写法,然并未出任何错,查之,然解构也,呜呼哀哉,进而习之. 解构(Destructuring):是将一个数据结构分解为更小 ...
- ES6拓展的对象功能
前言:因为之前看过很多的博客啊,书籍啊但是最后都雁过无痕,再问我基本没什么印象,所以就迫使自己看书的时候记点笔记,因为懒得写字[捂脸],现在是打字比写字要快好多,所以就写博客吧! ES6规范明确定义了 ...
- 数据挖掘入门系列教程(四)之基于scikit-lean实现决策树
目录 数据挖掘入门系列教程(四)之基于scikit-lean决策树处理Iris 加载数据集 数据特征 训练 随机森林 调参工程师 结尾 数据挖掘入门系列教程(四)之基于scikit-lean决策树处理 ...
- Vue2.0 【第一季】第1节 走进我的Vue2.0
目录 Vue2.0 [第一季]内部指令 第一节 走进我的Vue2.0 Vue2.0 [第一季]内部指令 记录一下我的代码地址:D:/Code/Vue 编辑器:VS code 前置知识: 1.HTML的 ...
- vue 父子组件 基础应用scrollball v-model sync
# 组件之间通信 可以通过 v-model 子组件可以通过 改变数据来改变父组件的数组 * v-model 子组件需要接受value属性,需要出发this.$emit("input&qu ...
- 031.核心组件-kubelet
一 kubelet概述 1.1 kubelet作用 在Kubernetes集群中,在每个Node(又称Minion)上都会启动一个kubelet服务进程.该进程用于处理Master下发到本节点的任务, ...
- 组件/ 外层数据初始化时候,不应该触发 on-change 事件
组件/ 外层数据初始化时候,不应该触发 on-change 事件 watch: { value (value) { this.noOnChange = true // 外层传值 不触发on-chang ...
- 两个div,高度都是100% 用 display:flex; 和 min-height 一边撑高了,另一边自动走 (不加flex不自动撑开)
两个div,高度都是100% 用 display:flex; 和 min-height 一边撑高了,另一边自动走
- Python3学习之路~10.2 协程、Greenlet、Gevent
一 协程 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切 ...