Как объединить два или много файлов изображения в формате TIFF в к одному многостраничному изображению в формате TIFF в JAVA

У меня есть 5 единственных изображений в формате TIFF страницы. Я хочу объединить все эти 5 изображений в формате TIFF в к одному многостраничному изображению в формате TIFF. Я использую Java Усовершенствованный API Обработки изображений. Я прочитал документацию API JAI и учебные руководства, данные SUN. Я плохо знаком с JAI. Я знаю основной базовый Java. Я не понимаю их документация и turorial SUN. Так друзья скажите мне, как объединить 5 файлов изображения в формате TIFF в к одному многостраничному изображению в формате TIFF. Дайте мне некоторые указания на вышеупомянутую тему. Я искал Интернет вышеупомянутую тему, но не получал любую единственную подсказку. Поэтому ведите меня друзья.

Заранее спасибо.

7
задан Param-Ganak 2 July 2010 в 12:53
поделиться

1 ответ

Надеюсь, у вас есть компьютерная память для этого. Файлы изображений 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(); 

Удачи.

11
ответ дан 6 December 2019 в 23:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: