2010-07-02 10 views
6

में एक मल्टीपाज टिफ छवि में दो या कई टिफ छवि फ़ाइलों को कैसे गठबंधन करें मेरे पास 5 सिंगल पेज टिफ छवियां हैं। मैं इन सभी 5 टिफ छवियों को एक मल्टीपाज टिफ छवि में जोड़ना चाहता हूं। मैं जावा उन्नत इमेजिंग एपीआई का उपयोग कर रहा हूं। मैंने सूर्य द्वारा दिए गए जेएआई एपीआई दस्तावेज और ट्यूटोरियल पढ़े हैं। मैं जेए के लिए नया हूं। मैं मूल कोर जावा जानता हूँ। मैं उन दस्तावेज़ों और सूर्य द्वारा टूरियल को समझ नहीं पा रहा हूं। तो दोस्तों कृपया मुझे बताएं कि 5 मल्टी छवि फ़ाइल को एक मल्टीपाज टिफ छवि में कैसे जोड़ना है। कृपया मुझे उपरोक्त विषय पर कुछ संकेत दें। मैं उपरोक्त विषय के लिए इंटरनेट खोज रहा हूं लेकिन कोई भी सुराग नहीं मिला। तो कृपया मुझे दोस्तों का मार्गदर्शन करें।जावा या

अग्रिम धन्यवाद।

+0

इस जावा छवि लाइब्रेरी का उपयोग करना - https://github.com/dragon66/icafe, आप आसानी से दो या किसी भी TIFF छवियों को एक साथ विलय कर सकते हैं। इसके अलावा आपको छवियों को डीकोड करने की आवश्यकता नहीं है और आप मल्टीपाज टीआईएफएफ को भी मर्ज कर सकते हैं। – dragon66

उत्तर

10

मुझे आशा है कि आपके पास ऐसा करने के लिए कंप्यूटर मेमोरी है। टीआईएफएफ छवि फाइलें बड़ी हैं।

आप सही हैं कि आपको Java Advanced Imaging (JAI) एपीआई ऐसा करने की आवश्यकता है।

सबसे पहले, आपको टीआईएफएफ छवियों को 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

धन्यवाद सर! आपके उत्तर और समाधान के लिए। मैंने आपके समाधान को लागू किया है और यह सही काम करता है। कुछ बदलावों के साथ यह मेरी आवश्यकता के अनुसार काम कर रहा है। आपका बहुत बहुत धन्यवाद! –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^