2011-05-25 13 views
5

HI मैं POI परियोजना के बारे में पढ़ सकते हैं और thumbs.db लेकिन कोड में हो रही अपवाद से छवियों को निकालने की कोशिश की .. कोड ओएसजावा में Thumbs.db से छवियों को निकालने के लिए कैसे?

InputStream stream = new FileInputStream("C:\\Thumbs.db"); 
POIFSFileSystem fs = new POIFSFileSystem(stream); 
DirectoryEntry root = fs.getRoot(); 
Entry entry = root.getEntry("2"); 
DocumentInputStream is = fs.createDocumentInputStream(entry.getName()); 
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(is); 
JPEGDecodeParam param = JPEGCodec.getDefaultJPEGEncodeParam(4, JPEGDecodeParam.COLOR_ID_RGBA); 
decoder.setJPEGDecodeParam(param); 
BufferedImage originalBufferedImage = decoder.decodeAsBufferedImage(); 

"com.sun.image.codec.jpeg.ImageFormatException के रूप में अपवाद हो रही है: एक जेपीईजी फ़ाइल नहीं: 0x0c 0x00 "

उपरोक्त मामले में समस्या क्या है? क्या आप उपर्युक्त कार्य करने का कोई अन्य तरीका सुझा सकते हैं?

उत्तर

9

इससे पहले कि आप छवियों को निकालने शुरू कर सकें, आपको Thumbs.db फ़ाइल के शीर्षलेख को पढ़ने की आवश्यकता है। नीचे दिए गए परिवर्तनों के साथ प्रयास करें, इसे ImageFormatException हटा देना चाहिए जो आपको मिल रहा है।

InputStream stream = new FileInputStream("C:\\Thumbs.db"); 
POIFSFileSystem fs = new POIFSFileSystem(stream); 
DirectoryEntry root = fs.getRoot(); 
Entry entry = root.getEntry("2"); 
DocumentInputStream is = fs.createDocumentInputStream(entry.getName()); 

//Added to read the header lines and fix the ImageFormatException 
int header_len = is.read(); 
for (int i = 1; i < header_len; i++) { 
     is.read(); 
} 

JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(is); 
JPEGDecodeParam param = JPEGCodec.getDefaultJPEGEncodeParam(4,JPEGDecodeParam.COLOR_ID_RGBA); 
decoder.setJPEGDecodeParam(param); 
BufferedImage originalBufferedImage = decoder.decodeAsBufferedImage(); 

मुझे उम्मीद है कि इससे मदद मिलती है!

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

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