我有5个单页的tiff图像。 我想将这五个tiff图像合并成一个多页的tiff图像。 我正在使用Java高级图像API。 我已经阅读了SUN提供的JAI API文档和教程。 我是JAI的新手。 我知道基本的Java编程语言。 然而,我不理解SUN提供的文档和教程。 请给我一些有关如何将5个tiff图像文件合并成一个多页tiff图像的指导。 我已经在互联网上搜索了这个问题,但没有找到任何线索。
我有5个单页的tiff图像。 我想将这五个tiff图像合并成一个多页的tiff图像。 我正在使用Java高级图像API。 我已经阅读了SUN提供的JAI API文档和教程。 我是JAI的新手。 我知道基本的Java编程语言。 然而,我不理解SUN提供的文档和教程。 请给我一些有关如何将5个tiff图像文件合并成一个多页tiff图像的指导。 我已经在互联网上搜索了这个问题,但没有找到任何线索。
希望你的电脑内存足够大。TIFF图像文件很大。
你是正确的,你需要使用 Java高级图像 (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();