Java api到exiftool

我很有兴趣用java api或类似的东西解析exiftool结果。

我一直在研究,但我没有找到任何例子。 例如,我怎样才能在我的java项目中获得这些结果?

ExifTool版本号:8.22

文件名:ExifTool.jpg

目录:t / images文件

大小:24 kB文件修改日期/时间

等等..我正在寻找’如何’或类似的东西。

ExifTool (for Java)旨在成为Phil Harvey的ExifTool的简单易用且强大的Java抽象。 在imgscalr项目保护伞下孵化了一段时间后,我刚刚在上周发布了第一个公开发布。

该项目属于商业友好型Apache 2许可证。

我对库的目标不仅仅是从调用者中抽象出外部进程执行代码(就像大多数其他抽象层似乎都是这样),而是实际设计一个包装器如此紧密集成和弹性(我会澄清我的内容)这意味着你将ExifTool类的实例与用Java编写的ExifTool类完全相同。

在这个初始版本中,我支持读取标签数据(将在未来版本中添加写入),它就像这样简单:

File image = // path to some image ExifTool tool = new ExifTool(); Map 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)); 

在新的“守护进程模式”(-stay_open True cmd line)中使用ExifTool也是受支持的,并且启用对它的支持就像创建ExifTool实例一样简单:

 ExifTool tool = new ExifTool(Feature.STAY_OPEN); 

有关如何使用ExifTool类的文档非常广泛,涵盖从设计到性能到线程安全的所有内容。

除了简单地使用Java中的ExifTool之外,该类还采用了大量的预防措施来最大限度地减少运行时问题,并正确捕获和报告以文档记录的方式出现的任何和所有错误(而不是让惊喜exception冒出来)来自核心Java类)。

我对此exception处理和错误恢复非常迂腐,因为该类旨在允许您在繁忙的Web应用程序等高可用性环境中使用ExifTool。 我不仅想要包装简单的Process对象,然后如果有什么东西爆炸,我会举起双手。 我知道自己(以及其他使用该类的人)需要一个设计良好的API,以便轻松恢复错误。

例如,尝试在守护程序模式下使用ExifTool将导致类实际检查ExifTool的底层安装是否支持该function,并抛出UnsupportedFeatureException,并提供有关如何解决该问题的建议(如果不支持)。

除了前置条件检查之外,为了确保类的使用(即在守护进程模式下)不会泄漏本机OS进程以及用于与它们通信的Input / OutputStream,该类提供了一个自动清理线程,在指定的不活动间隔 (默认为10分钟)之后,将彻底关闭外部进程和读/写流,使ExifTool的空闲实例轻量级并易于重新使用。

在下次调用该类时,所有资源都会重新初始化,以解析更多元数据,因此无需抛出并重新创建新实例。 此外,清理线程仅在长时间不活动后执行,而不是在设定的时间表上执行。 您可以将间隔设置为您想要的任何内容,或者完全关闭清理线程并自行管理清理(只需调用close())。

这些设计都是我最终目标的一部分,即将ExifTool集成到Java应用程序中,无缝,高效且简单。

您可以查看主项目页面以获取有关项目,用法,来源,下载链接等的更多信息,或者您可以直接跳到GitHub并查看代码(如果您愿意)。

我不知道exiftool,但我之前使用过MediaUtil来读取和编写java中的exif标签(我用它来自动化jpeg图像旋转)

Interesting Posts