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

如何在JAVA中将两个或多个tiff图像文件合并到一个多页tiff图像中,java,image,tiff,jai,multipage,Java,Image,Tiff,Jai,Multipage,我有5个单页tiff图像。 我想将所有这5个tiff图像合并到一个多页tiff图像中。 我正在使用Java高级图像API。 我已经阅读了SUN提供的JAI API文档和教程。 我对洁是新来的。我知道基本的核心java。 我不理解SUN提供的那些文档和教程。 朋友们,请告诉我如何将5个tiff图像文件合并到一个多页tiff图像中。 请就上述话题给我一些指导。 我一直在网上搜索上述主题,但没有得到任何线索。 所以请引导我的朋友们 提前谢谢。我希望你有足够的计算机内存来完成这项工作。TIFF图像文件很

我有5个单页tiff图像。 我想将所有这5个tiff图像合并到一个多页tiff图像中。 我正在使用Java高级图像API。 我已经阅读了SUN提供的JAI API文档和教程。 我对洁是新来的。我知道基本的核心java。 我不理解SUN提供的那些文档和教程。 朋友们,请告诉我如何将5个tiff图像文件合并到一个多页tiff图像中。 请就上述话题给我一些指导。 我一直在网上搜索上述主题,但没有得到任何线索。 所以请引导我的朋友们


提前谢谢。

我希望你有足够的计算机内存来完成这项工作。TIFF图像文件很大

您是正确的,因为您需要使用API来完成此操作

首先,您必须将TIFF图像转换为。下面是一些可能会起作用的代码。我还没有测试过这段代码

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 image[]=新的BufferedImage[numImages];
对于(int i=0;i
然后,将BuffereImage数组转换回多个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(); 
TIFFEncodeParam params=新的TIFFEncodeParam();
OutputStream out=新文件OutputStream(输出目录+图像名称+“.tif”);
ImageEncoder编码器=ImageCodec.createImageEncoder(“tiff”,out,params);
向量=新向量();
对于(int i=0;i

祝你好运。

不客气。既然你已经了解了BuffereImage,你可以做其他的照片转换了。@GilbertLeBlanc我不喜欢挖掘像这样的旧线索,但我想问Gilbert一个问题。使用上面提供的代码将生成多页tiff图像,其中第一个位置是重复的(3个单独的图像将成为第1、1、2、3页)。我相信这是因为向量迭代器,即使它已经被设置为要写入,您也会在第一个图像的末尾初始化它。有什么办法可以解决这个问题吗?@user1806716我已经更新了答案来修复重复的首页问题。这是一个很好的答案,非常有效+1使用此Java图像库,您可以轻松地将两个或任意数量的TIFF图像合并在一起。此外,您不需要解码图像,甚至可以合并多页TIFF。