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,图片拼接
0
投稿

猜你喜欢

  • Android 7.0新特性详解

    2022-10-10 07:11:56
  • springboot整合solr的方法详解

    2023-01-20 17:54:37
  • 详解SpringBoot初始教程之Tomcat、Https配置以及Jetty优化

    2023-10-25 23:34:02
  • Spring中多配置文件及引用其他bean的方式

    2023-07-01 17:31:03
  • Android ViewPager相册横向移动的实现方法

    2023-02-19 07:26:08
  • sublime text3搭建配置c语言编译环境的详细图解教程(小白级)

    2021-12-16 09:18:27
  • C++实现企业职工工资管理系统

    2023-11-02 17:34:34
  • Android自定义View实现圆弧进度效果

    2021-08-20 02:26:21
  • 如何更改Dialog的标题与按钮颜色详解

    2023-06-01 23:54:54
  • C#简单获取时间差的小例子

    2022-02-20 10:12:34
  • Android RecyclerView实现滑动删除

    2022-11-20 19:50:42
  • MybatisPlus使用@TableId主键id自增长无效的解决

    2023-01-30 15:59:41
  • 解决JTable排序问题的方法详解

    2023-02-07 08:53:42
  • Android开发之ListView的简单用法及定制ListView界面操作示例

    2021-10-17 13:26:15
  • Android中使用七牛云存储进行图片上传下载的实例代码

    2023-12-17 11:56:35
  • Java-String类最全汇总(下篇)

    2023-11-09 14:45:26
  • RxJava+Retrofit+Mvp实现购物车

    2022-03-22 16:24:48
  • Android开发之设置开机自动启动的几种方法

    2021-12-04 20:35:37
  • C#实现滑动开关效果

    2023-11-26 22:18:29
  • MyBatis-Plus实现公共字段自动填充功能详解

    2021-10-19 22:14:39
  • asp之家 软件编程 m.aspxhome.com