首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java到exiftool

Java到exiftool
EN

Stack Overflow用户
提问于 2010-06-11 08:46:52
回答 3查看 8.4K关注 0票数 7

我对用java或类似的方法解析exiftool结果很感兴趣。

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

ExifTool版本号: 8.22 文件名: ExifTool.jpg 目录:t/图像文件 大小: 24 kB文件修改日期/时间

等等。我在找一个“如何”之类的东西。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-21 16:04:03

ExifTool (for )被设计成是菲尔·哈维的ExifTool的一个简单易用和健壮的Java抽象。上周,我在imgscalr项目保护伞下酝酿了一段时间后,发布了第一个公开版本。

该项目处于商业友好的Apache 2许可之下.

这个库的目标不仅仅是从调用者中抽象出外部流程执行代码(就像大多数其他抽象层似乎要做的那样),而是实际上设计一个如此紧密的集成和弹性的包装器(稍后我将澄清我的意思),以便您正确地对待ExifTool类的实例,就像用ExifTool本身编写时一样。

在这个初始版本中,我支持读取标记数据(将在以后的版本中添加写入),它非常简单:

代码语言:javascript
复制
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 (-stay_open True cmd行)也是受支持的,打开它的支持就像创建ExifTool实例一样容易:

代码语言:javascript
复制
ExifTool tool = new ExifTool(Feature.STAY_OPEN);

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

除了使用Java的ExifTool之外,该类还采取了大量的预防措施,以尽量减少运行时问题,并正确捕获和报告任何和所有可能以详细记录的方式出现的错误(而不是让核心Java类出现意外异常)。

对于这个异常处理和错误恢复,我是如此迂腐,因为该类的设计是为了允许您在高可用性环境中(比如繁忙的web应用程序)使用ExifTool。我不只是想包装简单的过程对象,然后把我的手举起来,如果有东西爆炸。我知道我自己(以及其他使用这个类的人)需要一个设计良好的API,以便进行容易的错误恢复。

例如,尝试在守护进程模式中使用ExifTool将导致类实际检查ExifTool的底层安装以获得对该特性的支持,并抛出一个UnsupportedFeatureException,并就如何解决不受支持的问题提出建议。

除了预条件检查之外,为了确保类的使用(即守护进程模式)不会泄漏本机OS进程以及用于与它们通信的输入/OutputStreams,该类提供了一个自动清理线程,在规定的不活动时间间隔 (默认值为10分钟)之后,该线程将干净地关闭外部进程和读/写流,从而使ExifTool的空闲实例变得轻量级,便于重新使用。

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

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

您可以查看主项目页面获得项目、使用、源代码、下载链接等方面的更多信息,也可以直接跳转到GitHub并查看代码(如果您愿意的话)。

票数 7
EN

Stack Overflow用户

发布于 2010-06-11 16:17:24

请查看ExifTool论坛上的回复:

http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,2697.0.html

票数 3
EN

Stack Overflow用户

发布于 2010-06-11 09:58:49

我不知道exiftool,但我以前使用MediaUtil在java中读取和编写exif标记(我使用它来实现jpeg图像的自动旋转)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3021420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档