如何在JAVA中将两个或多个tiff图像文件合并到一个多页tiff图像中

我有5个单页tiff图像。 我想将所有这5个tiff图像组合成一个多页tiff图像。 我正在使用Java Advanced Imaging API。 我已经阅读了SUN提供的JAI API文档和教程。 我是JAI的新手。 我知道基本的核心java。 我不理解SUN的那些文档和文化。 所以朋友请告诉我如何将5个tiff图像文件合并到一个多页tiff图像中。 请给我一些关于上述主题的指导。 我一直在寻找互联网上面的主题,但没有得到任何一个线索。 所以请指导我的朋友们。

提前致谢。

我希望你有计算机内存来做到这一点。 TIFF图像文件很大。

您是正确的,因为您需要使用Java Advanced Imaging(JAI) API来执行此操作。

首先,您必须将TIFF图像转换为java.awt.image.BufferedImage 。 这里有一些可能有用的代码。 我还没有测试过这段代码。

BufferedImage image[] = new BufferedImage[numImages]; for (int i = 0; i < numImages; i++) { SeekableStream ss = new FileSeekableStream(input_dir + file[i]); ImageDecoder decoder = ImageCodec.createImageDecoder("tiff", ss, null); PlanarImage op = new NullOpImage(decoder.decodeAsRenderedImage(0), null, null, OpImage.OP_IO_BOUND); image[i] = op.getAsBufferedImage(); } 

然后,将BufferedImage数组转换回多个TIFF图像。 我还没有测试过这段代码。

 TIFFEncodeParam params = new TIFFEncodeParam(); OutputStream out = new FileOutputStream(output_dir + image_name + ".tif"); ImageEncoder encoder = ImageCodec.createImageEncoder("tiff", out, params); Vector vector = new Vector(); for (int i = 0; i < numImages; i++) { vector.add(image[i]); } params.setExtraImages(vector.listIterator(1)); // this may need a check to avoid IndexOutOfBoundsException when vector is empty encoder.encode(image[0]); out.close(); 

祝你好运。