【问题标题】:Copy all exif tags from one jpeg to another将所有 exif 标签从一个 jpeg 复制到另一个
【发布时间】:2021-10-13 08:09:46
【问题描述】:
【问题讨论】:
标签:
android
exif
android-exifinterface
【解决方案1】:
似乎没有这样的方法可以做到这一点,除了可能使用反射来访问ExifInterface 类中的私有属性。但是,这是不鼓励的,因为当然,实现可能会在未来的版本中中断。为简洁起见,我在下面写了如何做到这一点。
也就是说,您可以使用 Apache Sanslean 之类的东西来做您正在寻找的东西:http://bricolsoftconsulting.com/copying-exif-metadata-using-sanselan/。但是,我自己没有尝试过,所以我不能多说
使用反射
查看ExifInterfacesource,似乎没有“标准”的方式来获取所有标签。但是,您可以使用反射来读取所有键的mAttributes 映射(虽然这不太安全,但这是最后的手段)。这样的东西应该可以工作(Java):
Field f = obj.getClass().getDeclaredField("mAttributes");
f.setAccessible(true);
HashMap<String, ExifAttribute>[] attributes = (HashMap<String, ExifAttribute>[]) f.get(obj);
然后,您可以以相同的方式使用反射来访问目标ExifInterface 并将所有字段复制到其中。
请注意,我查看了 ExifInterface 的 AndroidX 版本,它是原始类的超集,也是推荐使用的类,但在其他情况下也应如此。