我有一个 JPEG 文件,我从中删除了所有元数据。将 Java 与Apache Commons Imaging结合使用我想从头开始向 JPEG 添加自定义元数据。使用ExifRewriter().updateExifMetadataLossy(…)
我已设法更新以下 Exif 标签,因为它们位于 IFD0 中:
ImageDescription
(0x010E
)Artist
(0x013B
)Copyright
(0x8298
)
我使用 IFD0 getOrCreateRootDirectory()
; 如果我从头开始创建元数据, usinggetOrCreateExifDirectory()
似乎不起作用:
TiffOutputSet tiffOutputSet = new TiffOutputSet();
TiffOutputDirectory exifDirectory = tiffOutputSet.getOrCreateRootDirectory();
…
TagInfoAscii tagImageDescription = new TagInfoAscii("ImageDescription", 0x010E, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0);
…
exifDirectory.add(tagImageDescription, "foo bar")
…
new ExifRewriter().updateExifMetadataLossy(byteSource, outputStream, tiffOutputSet);
这是可行的,但最后一块(这部分)难题是添加图像创建时间戳信息。这将是这些 Exif 标签:
DateTimeOriginal
(0x9003
)SubSecTimeOriginal
(0x9291
)TimeZoneOffset
(0x882a
)
然而,这些 Exif 标签似乎不在其他一些 Exif 目录中。(从metadata-extractor开始,它似乎是“子 IDF”目录)。但是如何在 Apache Commons Imaging 中获取另一个 Exif SubIFD 目录,以便添加这些标签?(请记住,我是从头开始编写所有这些元数据,而不是修改元数据。)