我希望能够使用Java API或类似的方式解析ExifTool的结果。
我一直在研究,但是没有找到任何示例。例如,我该如何在我的Java项目中获取这些结果呢?
ExifTool版本号:8.22
文件名:ExifTool.jpg
目录:t/images 文件
大小:24 kB 文件修改日期/时间
等等..我正在寻找一个 "如何" 或类似的东西。
ExifTool (for Java)旨在成为一个易于使用和强大的Java抽象,基于Phil Harvey的ExifTool。在imgscalr项目的保护下,我在上周发布了第一个公开版本。
该项目采用商业友好的Apache 2许可证。
我的目标不仅是将外部进程执行代码从调用者中抽象出来(就像大多数其他抽象层似乎正在做的那样),而是实际上设计一个包装器,使其与集成紧密且具有弹性(稍后我会澄清我的意思),使您可以像Java本身编写ExifTool类一样处理它们的实例。
在这个初始版本中,我支持读取标签数据(将在未来版本中添加写入功能),并且非常简单:
File image = // path to some image
ExifTool tool = new ExifTool();
Map<Tag, String> valueMap =
tool.getImageMeta(image, Tag.GPS_LATITUDE, Tag.GPS_LONGITUDE);
System.out.println("Lat: " + valueMap.get(Tag.GPS_LATITUDE) +
"\tLong: " + valueMap.get(Tag.GPS_LONGITUDE));
ExifTool tool = new ExifTool(Feature.STAY_OPEN);
如何使用ExifTool类的文档非常详尽,涵盖了从设计到性能再到线程安全的所有内容。
除了使Java中使用ExifTool变得简单外,该类还采用了大量预防措施,以最小化运行时问题,并以良好记录的方式正确捕获和报告可能出现的任何错误(而不是让意外异常从核心Java类中冒出)。
我对这个异常处理和错误恢复非常严谨,因为该类旨在允许您在忙碌的Web应用程序等高可用性环境中利用ExifTool。我不仅想包装简单的Process对象,然后如果出现问题就放弃。我知道我自己(以及使用该类的任何其他人)都需要一个精心设计的API,以便轻松进行错误恢复。
例如,尝试在守护进程模式下使用ExifTool将导致该类实际检查ExifTool的底层安装是否支持该功能,并抛出UnsupportedFeatureException,如果不支持,则提供解决该问题的建议。
除了预先条件检查外,为了确保类的使用(即在守护进程模式下)不会泄漏本机操作系统进程以及用于与它们通信的Input/OutputStreams,该类提供了一个自动清理线程,该线程在指定的不活动间隔(默认为10分钟)后将清除外部进程和读/写流,使得ExifTool的空闲实例轻便且易于保留以供重复使用。请查看ExifTool论坛中的回复:
http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,2697.0.html