多张图片合成一个tif文件

最近在项目对接过程中,遇到一个奇葩的需求,对方提出要求我们将每一类材料合成一个tif文件提交到ftp服务器上,感觉很无奈,就找一些工具类来做,并记录一下,以防遗忘。
我使用maven来管理jar包,下面是需要的两个jar包,很无奈的是我使用maven并不能将这两个jar包下载下来,所以自己去找了一下。
maven地址:


<dependency>
    <groupId>com.github.jai-imageiogroupId>
    <artifactId>jai-imageio-coreartifactId>
    <version>1.3.1version>
dependency>



<dependency>
    <groupId>com.sun.mediagroupId>
    <artifactId>jai-codecartifactId>
    <version>1.1.3version>
dependency>

如果你可以将这两个jar包下载下来,就不用去找csdn上去找了
CSDN上该jar包的地址

public static void imgToTif(List filesPath, String toPath, String distFileName) {
        if (filesPath != null && filesPath.size() > 0) {
            File[] files = new File[filesPath.size()];
            for (int i = 0; i < filesPath.size(); i++) {
                files[i] = new File(filesPath.get(i));
            }
            if (files.length > 0) {
                try {
                    ArrayList pages = new ArrayList(files.length - 1);
                    FileSeekableStream[] stream = new FileSeekableStream[files.length];
                    for (int i = 0; i < files.length; i++) {
                        stream[i] = new FileSeekableStream(
                                files[i].getCanonicalPath());
                    }
                    PlanarImage firstPage = JAI.create("stream", stream[0]);
                    for (int i = 1; i < files.length; i++) {
                        PlanarImage page = JAI.create("stream", stream[i]);
                        pages.add(page);

                    }
                    TIFFEncodeParam param = new TIFFEncodeParam();
                    File f = new File(toPath);
                    if (!f.exists()) {
                        f.mkdirs();
                    }
                    OutputStream os = new FileOutputStream(toPath + File.separator + distFileName);
                    ImageEncoder enc = ImageCodec.createImageEncoder("tiff",
                            os, param);
                    param.setExtraImages(pages.iterator());
                    enc.encode(firstPage);
                    for (int i = 0; i < files.length; i++) {
                        stream[i].close();
                    }
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

测试代码:

public static void main(String[] args) throws Exception {
        File file = new File("temp/a.jpg");
        List list = new ArrayList();
        list.add(file.getAbsolutePath());
        list.add(file.getAbsolutePath());
        list.add(file.getAbsolutePath());
        imgToTif(list, "temp2", "a.tif");
    }

你可能感兴趣的:(java,工具类)