Java实现图片拼接
作者:Abel-Luan 时间:2023-02-28 23:01:27
本文实例为大家分享了Java实现图片拼接的具体代码,供大家参考,具体内容如下
/**
* 拼接图片(注:图片需长宽一致)
* @param files img1 ,img2
* @param type 1:横向拼接 2:纵向拼接
* @param targetFile 合成新的图片地址
*/
public static void mergeImage(String[] files, int type, String targetFile) {
int len = files.length;
if (len < 1) {
throw new RuntimeException("图片数量小于1");
}
File[] src = new File[len];
BufferedImage[] images = new BufferedImage[len];
int[][] ImageArrays = new int[len][];
for (int i = 0; i < len; i++) {
try {
src[i] = new File(files[i]);
images[i] = ImageIO.read(src[i]);
} catch (Exception e) {
throw new RuntimeException(e);
}
int width = images[i].getWidth();
int height = images[i].getHeight();
ImageArrays[i] = new int[width * height];
ImageArrays[i] = images[i].getRGB(0, 0, width, height, ImageArrays[i], 0, width);
}
int newHeight = 0;
int newWidth = 0;
for (int i = 0; i < images.length; i++) {
// 横向
if (type == 1) {
newHeight = newHeight > images[i].getHeight() ? newHeight : images[i].getHeight();
newWidth += images[i].getWidth();
} else if (type == 2) {// 纵向
newWidth = newWidth > images[i].getWidth() ? newWidth : images[i].getWidth();
newHeight += images[i].getHeight();
}
}
if (type == 1 && newWidth < 1) {
return;
}
if (type == 2 && newHeight < 1) {
return;
}
// 生成新图片
try {
BufferedImage ImageNew = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
int height_i = 0;
int width_i = 0;
for (int i = 0; i < images.length; i++) {
if (type == 1) {
ImageNew.setRGB(width_i, 0, images[i].getWidth(), newHeight, ImageArrays[i], 0,
images[i].getWidth());
width_i += images[i].getWidth();
} else if (type == 2) {
ImageNew.setRGB(0, height_i, newWidth, images[i].getHeight(), ImageArrays[i], 0, newWidth);
height_i += images[i].getHeight();
}
}
//输出想要的图片
ImageIO.write(ImageNew, targetFile.split("\\.")[1], new File(targetFile));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
来源:https://blog.csdn.net/qq_38114563/article/details/81408417
标签:java,图片拼接
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Android 7.0新特性详解
2022-10-10 07:11:56
springboot整合solr的方法详解
2023-01-20 17:54:37
![](https://img.aspxhome.com/file/2023/0/61580_0s.png)
详解SpringBoot初始教程之Tomcat、Https配置以及Jetty优化
2023-10-25 23:34:02
Spring中多配置文件及引用其他bean的方式
2023-07-01 17:31:03
![](https://img.aspxhome.com/file/2023/5/62715_0s.jpg)
Android ViewPager相册横向移动的实现方法
2023-02-19 07:26:08
![](https://img.aspxhome.com/file/2023/6/139436_0s.jpg)
sublime text3搭建配置c语言编译环境的详细图解教程(小白级)
2021-12-16 09:18:27
![](https://img.aspxhome.com/file/2023/1/131621_0s.png)
C++实现企业职工工资管理系统
2023-11-02 17:34:34
Android自定义View实现圆弧进度效果
2021-08-20 02:26:21
![](https://img.aspxhome.com/file/2023/4/139374_0s.png)
如何更改Dialog的标题与按钮颜色详解
2023-06-01 23:54:54
C#简单获取时间差的小例子
2022-02-20 10:12:34
Android RecyclerView实现滑动删除
2022-11-20 19:50:42
![](https://img.aspxhome.com/file/2023/5/139335_0s.jpg)
MybatisPlus使用@TableId主键id自增长无效的解决
2023-01-30 15:59:41
![](https://img.aspxhome.com/file/2023/4/75024_0s.png)
解决JTable排序问题的方法详解
2023-02-07 08:53:42
Android开发之ListView的简单用法及定制ListView界面操作示例
2021-10-17 13:26:15
![](https://img.aspxhome.com/file/2023/4/110724_0s.gif)
Android中使用七牛云存储进行图片上传下载的实例代码
2023-12-17 11:56:35
![](https://img.aspxhome.com/file/2023/1/138481_0s.png)
Java-String类最全汇总(下篇)
2023-11-09 14:45:26
![](https://img.aspxhome.com/file/2023/7/58857_0s.jpg)
RxJava+Retrofit+Mvp实现购物车
2022-03-22 16:24:48
![](https://img.aspxhome.com/file/2023/7/64957_0s.gif)
Android开发之设置开机自动启动的几种方法
2021-12-04 20:35:37
C#实现滑动开关效果
2023-11-26 22:18:29
![](https://img.aspxhome.com/file/2023/3/82163_0s.jpg)
MyBatis-Plus实现公共字段自动填充功能详解
2021-10-19 22:14:39
![](https://img.aspxhome.com/file/2023/2/84242_0s.png)