我需要能够更新图像元数据(即标签、创建者、描述、评论)并在常规 Exif 和 XMP 中进行。最有可能的是,我将阅读 Exif,并编写 XMP。
在搜索了一个也可以用于写作的图书馆之后,我遇到了十二只猴子。
https://github.com/haraldk/TwelveMonkeys
这似乎很有希望。事实上,我不费吹灰之力就已经能够阅读我的一张图片中包含描述的 Exif。请注意,不是使用标准的 javax API,而是使用十二猴 API。这对我来说没问题。什么都行!
在这一点上,我很高兴尽可能地避免使用标准 API,因为它看起来非常复杂且效率低下。我开始阅读我的 Exif,并为我的概念验证编写修改代码。这个想法是,实现我想要的最有效的方法(快速和安全地修改 JPEG 文件中的元数据)是执行以下步骤:
- 将所有段读入列表
- 找到需要修改的段
- 做那个修改
- 将所有段按顺序写入临时文件
- 如果一切顺利,将原始文件重命名为以后安全删除,将副本重命名为原始名称,最后删除原始文件。
但是,当我发现似乎没有实现的时候,我有点沮丧
com.twelvemonkeys.imageio.metadata.Directory
它实现了方法
add(Entry)
和
remove(Object)
除了 a
throw new UnsupportedOperationException("Directory is read-only");
如果这不是有效(和安全)实现我想要做的事情的方法......有没有人有关于如何在纯Java中做到这一点的建议?