2014-09-01 72 views
1

我正在尋找一種方法從java中的thumbs.db文件中提取圖像。我嘗試過使用另一個user here提供的方法。他的代碼段我有麻煩是Thumbs.db圖像提取Java

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

我得到錯誤JPEGImageDecoder無法解析爲類型。

+0

你有沒有嘗試按_Control + shift + o_? – Nabin 2014-09-01 15:52:14

+0

試過,沒有解決這個問題,謝謝你的幫助。還有其他建議嗎? – ZakHilton 2014-09-01 16:13:15

+0

來自任何庫的JPEGImageDecoder? – Nabin 2014-09-01 16:15:42

回答

1

不像其他例子那樣使用POI,但是您可以使用我的免費開源Thumbs.db plugin for ImageIO來閱讀縮略圖。

當依賴關係成立,你可以使用它是這樣的:

ImageInputStream input = ImageIO.createImageInput(new File("/path/thumbs.db")); 
ImageReader reader = ImageIO.getImageReaders(input).next(); 
reader.setInput(input); 

for (int i = 0; i < reader.getNumImages(); i++) { 
    BufferedImage thumb = reader.getImage(i, null); 

    // do something with it... 
} 

reader.dispose(); // These last two, preferably in a finally block or "try-with-resource" 
input.close(); 

如果你想看到更多詳細的圖像如何解碼,你可以看看源ThumbsDBImageReader.java


PS:如果你更喜歡用POI,我認爲你可以(在root每個條目)這樣的替換上面代碼:

BufferedImage originalBufferedImage = ImageIO.read(is); 
+0

非常感謝爲您提供幫助並提供您的插件供我使用。 – ZakHilton 2014-09-02 01:28:13

+0

不客氣! :-) – haraldK 2014-09-02 07:53:02

+0

還有一個問題,如果你不介意,你在哪裏說「認爲你可以用上面的代碼替換上面的代碼(對於根中的每個條目):BufferedImage thumb = ImageIO.read(is);你是什麼意思 – ZakHilton 2014-09-02 12:54:00