吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1895|回复: 3
收起左侧

[Java 转载] 图片拼接Java源代码,复制可用

[复制链接]
Heiye0508 发表于 2022-11-16 13:46
使用前把所需要的图片转移到F盘imgJoin文件夹下,此代码是将上述文件夹内的图片进行竖排拼接,需要每张图片的宽度相同

[Java] 纯文本查看 复制代码
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;
    }
}


[Java] 纯文本查看 复制代码
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[len];
        BufferedImage[] images = new BufferedImage[len];
        int[][] ImageArrays = new int[len][];
        for (int i = 0; i < len; i++) {
            try {
                src[i] = new File(imgs.get(i));
                //System.out.println(src[i]);
                images[i] = ImageIO.read(src[i]);
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
            int width = images[i].getWidth();
            int height = images[i].getHeight();
            // 从图片中读取RGB 像素
            ImageArrays[i] = new int[width * height];
            ImageArrays[i] = images[i].getRGB(0, 0, width, height,  ImageArrays[i], 0, width);
        }

        int dst_height = 0;
        int dst_width = images[0].getWidth();
        //合成图片像素
        for (int i = 0; i < images.length; i++) {
            dst_width = dst_width > images[i].getWidth() ? dst_width : images[i].getWidth();
            dst_height += images[i].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[0].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[i].getHeight(),
                        ImageArrays[i], 0, dst_width);
                height_i += images[i].getHeight();
            }

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

}


[Java] 纯文本查看 复制代码
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
大神  能封装一下吗  不会用   但需要这个软件
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 02:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表