使用纯Java读取图像,修改元数据并重写图像

时间:2019-03-08 17:08:37

标签: java jpeg exif twelvemonkeys

我需要能够更新图像元数据(即标签,创建者,描述,评论) 并在常规的Exif和XMP中执行。我很可能会阅读Exif并编写XMP。

在寻找一个也可以编写的图书馆之后,我遇到了十二只猴子。

https://github.com/haraldk/TwelveMonkeys

这似乎很有希望。确实,我不费吹灰之力就可以阅读其中一张图片中包含说明的Exif。请注意,不是使用标准的javax API,而是使用十二只猴子API。这对我来说没问题。不管用什么!

在这一点上,我很乐意尽可能地避免使用标准API,因为标准API似乎令人费解并且效率低下。我开始阅读Exif,并为概念验证编码修改内容。这个想法是,实现我想要的(对JPEG文件中的元数据进行快速而安全的修改)的最有效方法是执行以下步骤:

  • 将所有细分读入列表
  • 找到需要修改的细分
  • 进行修改
  • 依次将所有段写入临时文件
  • 如果一切顺利,请重命名原始文件以供以后安全删除,将副本重命名为原始名称,最后删除原始文件。

但是,当我发现似乎没有

的实现时,我感到有些沮丧。
com.twelvemonkeys.imageio.metadata.Directory

实现方法

add(Entry)

remove(Object)

以外的任何其他值
throw new UnsupportedOperationException("Directory is read-only");

如果这不是有效地(安全地)实现我想要做的事情的方式...有人在建议如何使用纯Java做到这一点吗?

0 个答案:

没有答案