java - 元数据提取器中的 getThumbnailData() 返回 CR2 文件的 null

标签 java exif metadata-extractor

我正在使用metadata-extractor的java版本2.8.1读取 CR2 文件。根据标签转储,有一个 Exif Thumbnail 目录,它声称有缩略图偏移量和长度。但是,当我在 ExifThumbnailDirectory 对象上调用 getThumbnailData() 时,它返回 null。知道为什么吗?该照片是用佳能EOS 70D相机拍摄的。当我用 JPEG 调用代码时,代码工作正常。源照片文件可以找到here .

[Exif Thumbnail] - Thumbnail Offset(0x0201) = 80600 bytes
[Exif Thumbnail] - Thumbnail Length(0x0202) = 15272 bytes
[Exif Thumbnail] - Image Width(0x0100) = 5568 pixels
[Exif Thumbnail] - Image Height(0x0101) = 3708 pixels
[Exif Thumbnail] - Bits Per Sample(0x0102) = 16 16 16 bits/component/pixel
[Exif Thumbnail] - Thumbnail Compression(0x0103) = JPEG (old-style)
[Exif Thumbnail] - Photometric Interpretation(0x0106) = RGB
[Exif Thumbnail] - Strip Offsets(0x0111) = 4472188
[Exif Thumbnail] - Samples Per Pixel(0x0115) = 3 samples/pixel
[Exif Thumbnail] - Rows Per Strip(0x0116) = 309 rows/strip
[Exif Thumbnail] - Strip Byte Counts(0x0117) = 22883515 bytes
[Exif Thumbnail] - Planar Configuration(0x011c) = Chunky (contiguous for each subsampling pixel)
[Exif Thumbnail] - Unknown tag (0xc5d9) = 2
[Exif Thumbnail] - Unknown tag (0xc6c5) = 1
[Exif Thumbnail] - Unknown tag (0xc6dc) = 450 301 7 4
[Exif Thumbnail] - Unknown tag (0xc5d8) = 1
[Exif Thumbnail] - Unknown tag (0xc5e0) = 1
[Exif Thumbnail] - Unknown tag (0xc640) = 1 2784 2784
[File] - File Name(0x0001) = foo.CR2
[File] - File Size(0x0002) = 27361411 bytes

最佳答案

getThumbnailData() 方法确实应该被删除。当大多数人不使用它时,它会将缩略图的所有数据分配到内存中。在这种情况下,CR2 处理器不包含它。

最好的选择是使用问题中显示的前两个值:

[Exif Thumbnail] - Thumbnail Offset(0x0201) = 80600 bytes
[Exif Thumbnail] - Thumbnail Length(0x0202) = 15272 bytes

有了这些和原始文件,您就可以提取图像的byte[]。至少,我 99% 确信你可以:)

如果没有,请告诉我,我们可以进一步调查。

关于java - 元数据提取器中的 getThumbnailData() 返回 CR2 文件的 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36757489/

相关文章:

Python:从 EXIF 中提取西里尔字符串

android - 在 onPictureTaken 和 write() 之间更改 "Exif"数据?

java - ColorPicker 中 TextField 中的字体颜色

java - CSV 保留 CRLF 同时替换 LF

java - 生成 json 时,我可以让 MOXy 将字符串转换为 boolean 值吗

java - 为什么我们需要 Memento 模式中的 Caretaker 类?真的有那么重要吗?

javascript - node.js 在 JPEG 中创建/修改 Exif

java - 使用 Java 从 tif 文件中提取 IPTC/EXIF 数据

java - 在 Android Studio 中添加元数据提取器库

java - 无法从 JPEG 元数据中检索标题的全文