gpt4 book ai didi

java - 如何在 Java 中从 Thumbs.db 中提取图像?

转载 作者:搜寻专家 更新时间:2023-10-31 19:35:18 24 4
gpt4 key购买 nike

你好我阅读了有关 POI 项目的信息,并尝试从 thumbs.db 中提取图像,但在代码中出现异常。代码 os

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:不是 JPEG 文件:以 0x0c 0x00 开头”

上述情况有什么问题?你能建议一些其他方法来完成上述任务吗?

最佳答案

在开始提取图像之前,您需要阅读 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();

希望对您有所帮助!

关于java - 如何在 Java 中从 Thumbs.db 中提取图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6129450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com