gpt4 book ai didi

Java api 到 exiftool

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:04:14 24 4
gpt4 key购买 nike

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

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

ExifTool Version Number : 8.22

File Name : ExifTool.jpg

Directory : t/images File

Size : 24 kB File Modification Date/Time

等等。我正在寻找“如何做”或类似的东西。

最佳答案

ExifTool (针对 Java)旨在成为 Phil Harvey 的 ExifTool 的简单易用且健壮的 Java 抽象。在 imgscalr 项目伞下孵化该项目一段时间后,我刚刚在上周发布了第一个公开版本。

该项目采用商业友好的 Apache 2 许可。

我对这个库的目标不仅仅是从调用者那里抽象出外部流程执行代码(就像大多数其他抽象层似乎做的那样),而是设计一个如此紧密集成和有弹性的包装器(我会稍后澄清我的意思),如果 ExifTool 本身是用 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));

还支持在新的“守护进程模式”(-stay_open True cmd 行)中使用 ExifTool,打开对它的支持就像创建 ExifTool 实例一样简单:

ExifTool tool = new ExifTool(Feature.STAY_OPEN);

关于 how to use the ExifTool class 的文档内容广泛,涵盖从设计到性能再到线程安全的方方面面。

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

我对这种异常处理和错误恢复非常迂腐,因为该类旨在允许您在高可用性环境(如繁忙的 Web 应用程序)中使用 ExifTool。我不只是想包裹简单的 Process 对象,然后在发生爆炸时将我的手举到空中。我知道我自己(以及任何其他使用该类的人)需要一个设计良好的 API 来允许轻松的错误恢复。

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

除了前提条件检查之外,为了确保类的使用(即在守护进程模式下)不会泄漏 native 操作系统进程以及用于与它们通信的输入/输出流,该类提供了一个自动清理 specified interval of inactivity 之后的线程(默认为 10 分钟)将干净地关闭外部进程和读/写流,使 ExifTool 的空闲实例轻量级并易于保留以供重用。

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

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

您可以查看 main project page有关项目、用法、来源、下载链接等的更多信息,或者您可以直接跳转到 GitHub并根据需要查看代码。

关于Java api 到 exiftool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3021420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com