【问题标题】:Thumbs.db image extraction JavaThumbs.db 图像提取 Java
【发布时间】:2014-10-25 21:03:57
【问题描述】:

我正在寻找一种从 java 中的 thumbs.db 文件中提取图像的方法。我试过用另一个user here提供的方法。我遇到问题的他的代码段是

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

我收到错误 JPEGImageDecoder 无法解析为类型。

【问题讨论】:

  • 你试过按 control+shift+o 吗?
  • 试过没有解决问题,不过感谢您的帮助。还有其他建议吗?
  • JPEGImageDecoder 是否来自任何库?
  • 在进一步调查之后,显然这已在 JDK7 blog.idrsolutions.com/2012/05/… 中被弃用了

标签: java thumbnails javax.imageio


【解决方案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);

【讨论】:

  • 非常感谢您的帮助并提供您的插件供我使用。
  • 如果你不介意,还有一个问题,你说“认为你可以用这样的东西替换上面的代码(对于根目录中的每个条目):BufferedImage thumb = ImageIO.read(is);什么意思
  • @ZakHilton 您可以将问题中的 4 行替换为该行,您提到的 code from the answer 应该可以工作。
  • 我看到我现在可以工作了吗谢谢,如果我一直在问的事情有点愚蠢而且很明显我只是对 java 的这一部分非常陌生,我很抱歉。啊哈。
  • 只是好奇你的插件是否支持 windows vista 以后使用的缩略图格式,thumbnailcache 格式
猜你喜欢
  • 1970-01-01
  • 2014-04-28
  • 1970-01-01
  • 2015-03-31
  • 2010-10-18
  • 1970-01-01
  • 2015-07-01
  • 1970-01-01
相关资源
最近更新 更多