Heiye0508 发表于 2022-11-16 13:46

图片拼接Java源代码,复制可用

使用前把所需要的图片转移到F盘imgJoin文件夹下,此代码是将上述文件夹内的图片进行竖排拼接,需要每张图片的宽度相同

public class GetPictures {

    public static List<String> getPic(String path){
      File dir = new File(path);

      List<String> fileList = List.of(dir.list());      //获取指定文件夹中所有文件的文件名
      List<String> imgs = new ArrayList<>();
      int j = 0;
      //筛选出图片
      for(int i = 0; i < fileList.size(); i++) {
            String sPath = path + "/" + fileList.get(i);
            File pic = new File(sPath);
            //System.out.println(pic);
            BufferedImage sourceImg;
            try {
                sourceImg = ImageIO.read(new FileInputStream(pic));
                System.out.println(fileList.get(i));
                if (sourceImg != null && !fileList.get(i).equals("imgJoinFinal.jpg")) {
                  imgs.add(sPath);
                  j++;
                  //System.out.println(fileList.get(i));//打印出符合要求的图片文件名
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
      }
      return imgs;
    }
}

public class JoinMoreImage {

    public static boolean merge(List<String> imgs, String type, String dst_pic) {
      //获取需要拼接的图片张数
      int len = imgs.size();
      //判断长度是否大于0
      if (len < 1) {
            return false;
      }

      File[] src = new File;
      BufferedImage[] images = new BufferedImage;
      int[][] ImageArrays = new int[];
      for (int i = 0; i < len; i++) {
            try {
                src = new File(imgs.get(i));
                //System.out.println(src);
                images = ImageIO.read(src);
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
            int width = images.getWidth();
            int height = images.getHeight();
            // 从图片中读取RGB 像素
            ImageArrays = new int;
            ImageArrays = images.getRGB(0, 0, width, height,ImageArrays, 0, width);
      }

      int dst_height = 0;
      int dst_width = images.getWidth();
      //合成图片像素
      for (int i = 0; i < images.length; i++) {
            dst_width = dst_width > images.getWidth() ? dst_width : images.getWidth();
            dst_height += images.getHeight();
      }
      //合成后的图片
      System.out.println("宽度:"+dst_width);
      System.out.println("高度:"+dst_height);
      if (dst_height < 1) {
            System.out.println("dst_height < 1");
            return false;
      }
      // 生成新图片
      try {
            dst_width = images.getWidth();
            BufferedImage ImageNew = new BufferedImage(dst_width, dst_height,
                  BufferedImage.TYPE_INT_RGB);
            int height_i = 0;
            for (int i = 0; i < images.length; i++) {
                ImageNew.setRGB(0, height_i, dst_width, images.getHeight(),
                        ImageArrays, 0, dst_width);
                height_i += images.getHeight();
            }

            File outFile = new File(dst_pic);
            ImageIO.write(ImageNew, type, outFile);// 写图片 ,输出到硬盘
      } catch (Exception e) {
            e.printStackTrace();
            return false;
      }
      return true;
    }

}

public class Main {

    public static void main(String[] args) {

      //图片路径
      String path = "F:/imgJoin/";
      //输入图片地址
      //String[] imgs={"F:/test/10001.jpg","F:/test/10002.jpg"};
      //调用方法生成图片路径
      GetPictures getPictures = new GetPictures();
      List<String> imgs = getPictures.getPic(path);
      //System.out.println(imgs.get(4));
      //调用方法生成图片
      JoinMoreImage joinMoreImage = new JoinMoreImage();
      joinMoreImage.merge(imgs,"jpg","F:/imgJoin/imgJoinFinal.jpg");
    }

}

bruce1111 发表于 2022-11-16 15:36

你好,大神,请问你有彻底关闭谷歌或火狐浏览器当前页的js方法吗?

wa20521 发表于 2022-11-16 15:49

感谢分享

lazychen 发表于 2022-11-16 19:47

大神能封装一下吗不会用   但需要这个软件
页: [1]
查看完整版本: 图片拼接Java源代码,复制可用