Я ищу способ извлечь изображения из файла 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 не может быть разрешен как тип.
Не используя POI, как в другом примере, но вы можете использовать мой бесплатный плагин Thumbs.db с открытым исходным кодом для 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);