2014-09-01 21 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