Par*_*nak 7 java tiff image jai multipage
我有5个单页tiff图像.我想将所有这5个tiff图像合并到一个多页tiff图像中.我正在使用Java Advanced Imaging API.我已经阅读了SUN提供的JAI API文档和教程.我是JAI的新手.我知道基本的核心java.我不理解SUN的那些文档和文化.所以朋友请告诉我如何将5个tiff图像文件合并到一个多页tiff图像中.请给我一些关于上述主题的指导.我一直在搜索互联网上面的主题,但没有得到任何一个线索.所以请指导我的朋友们.
提前致谢.
Gil*_*anc 11
我希望你有计算机内存来做到这一点.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();
}
Run Code Online (Sandbox Code Playgroud)
然后,将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();
Run Code Online (Sandbox Code Playgroud)
祝好运.
| 归档时间: |
|
| 查看次数: |
21136 次 |
| 最近记录: |