2010-07-02 11 views
6

5 개의 단일 페이지 티파니 이미지가 있습니다. 나는이 5 개의 tiff 이미지를 모두 하나의 다중 페이지 티프 이미지로 결합하려고합니다. 자바 고급 이미징 API를 사용하고 있습니다. SUN이 제공 한 JAI API 문서 및 자습서를 읽었습니다. 저는 JAI를 처음 사용합니다. 나는 기본적인 핵심 자바를 알아. 나는 SUN에 의해 ​​그 문서들과 turorial을 이해하지 못합니다. 친구 5 티파니 이미지 파일을 하나의 멀티 티파니 이미지에 결합하는 법을 알려주세요. 위의 주제에 대한 약간의 조언을주십시오. 위 주제로 인터넷을 검색했지만 단서가 하나도 없습니다. 친구를 안내 해주시기 바랍니다.2 개 또는 다수의 티파니 이미지 파일을 자바의 하나의 다중 페이지 티파니 이미지에 결합하는 방법

미리 감사드립니다.

+0

이 Java 이미지 라이브러리 (https://github.com/dragon66/icafe)를 사용하면 두 개 또는 여러 개의 TIFF 이미지를 쉽게 병합 할 수 있습니다. 또한 이미지를 디코딩 할 필요가 없으며 다중 페이지 TIFF도 병합 할 수 있습니다. – dragon66

답변

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

감사합니다 선생님! 귀하의 회신은 입니다. 나는 당신의 논리를 도전적으로 시도 할 것입니다. 대단히 감사합니다! –

+0

당신을 진심으로 환영합니다. –

+0

감사합니다 선생님! 귀하의 회신 및 솔루션. 솔루션을 구현했으며 완벽하게 작동합니다. 일부 변경 사항은 내 요구 사항에 따라 작동합니다. 대단히 감사합니다! –

관련 문제