2010-07-02 122 views
6

我有5個單頁tiff圖像。 我想將所有這5個tiff圖像合併爲一個多頁tiff圖像。 我正在使用Java Advanced Imaging API。 我已閱讀SUN給出的JAI API文檔和教程。 我是JAI的新手。我知道基本的核心Java。 我不理解SUN的那些文檔和內容。 所以,朋友請告訴我如何將5個tiff圖像文件合併爲一個多頁tiff圖像。 請給我一些關於上述話題的指導。 我一直在尋找上述主題的互聯網,但沒有得到任何單一的線索。 所以請引導我的朋友。如何在JAVA中將兩個或多個tiff圖像文件合併爲一個多頁tiff圖像

在此先感謝。

+0

使用此Java圖像庫 - https://github.com/dragon66/icafe,您可以輕鬆地將兩個或任意數量的TIFF圖像合併在一起。另外你不需要解碼圖像,你甚至可以合併多頁TIFF。 – dragon66 2014-10-09 16:22:12

回答

10

我希望你有計算機內存來做到這一點。 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(); 

祝你好運。

+0

謝謝,先生! 爲您的答覆。我會挑戰你的邏輯。 非常感謝! – 2010-07-02 15:01:20

+0

不客氣。 – 2010-07-02 15:16:45

+0

謝謝先生!爲您的答覆和解決方案。我已經實現了你的解決方案,它的工作原理非常完美根據我的要求進行一些更改。非常感謝你! – 2010-07-05 10:18:37