Java api 到 exiftool

2024-01-01

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

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

Exif工具版本号:8.22

文件名 : Exif工具.jpg

目录:t/images 文件

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

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


ExifTool http://www.thebuzzmedia.com/software/exiftool-enhanced-java-integration-for-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);

有关的文档如何使用ExifTool类 http://www.thebuzzmedia.com/downloads/software/exiftool/javadoc/com/thebuzzmedia/exiftool/ExifTool.html内容广泛,涵盖从设计到性能再到线程安全的所有内容。

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

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

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

除了前置条件检查之外,为了确保该类的使用(即在守护进程模式下)不会泄漏本机操作系统进程以及用于与其通信的输入/输出流,该类还提供了一个自动清理线程之后指定的不活动间隔 http://www.thebuzzmedia.com/downloads/software/exiftool/javadoc/com/thebuzzmedia/exiftool/ExifTool.html#PROCESS_CLEANUP_DELAY(默认为 10 分钟)将彻底关闭外部进程和读/写流,使 ExifTool 的空闲实例变得轻量级且易于保留以供重复使用。

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

这些设计都是我最终目标的一部分,即使 ExifTool 无缝、高性能且轻松地集成到 Java 应用程序中。

您可以查看主项目页面 http://www.thebuzzmedia.com/software/exiftool-enhanced-java-integration-for-exiftool/有关项目、用途、来源、下载链接等的更多信息,或者您可以直接跳到GitHub https://github.com/thebuzzmedia/exiftool如果您愿意的话,可以查看代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java api 到 exiftool 的相关文章

  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • Spring AspectJ 在双代理接口时失败:无法生成类的 CGLIB 子类

    我正在使用Spring的
  • 如何在 Spring 中禁用使用 @Component 注释创建 bean?

    我的项目中有一些用于重构逻辑的通用接口 它看起来大约是这样的 public interface RefactorAwareEntryPoint default boolean doRefactor if EventLogService wa
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • java.lang.IllegalStateException:应用程序 PagerAdapter 更改了适配器的内容,而没有调用 PagerAdapter#notifyDataSetChanged android

    我正在尝试使用静态类将值传递给视图 而不是使用意图 因为我必须传递大量数据 有时我会收到此错误 但无法找出主要原因是什么 Error java lang IllegalStateException The application s Pag
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • Eclipse Maven Spring 项目 - 错误

    I need help with an error which make me crazy I started to study Java EE and I am going through tutorial on youtube Ever
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • 内部类的构造函数引用在运行时失败并出现VerifyError

    我正在使用 lambda 为内部类构造函数创建供应商ctx gt new SpectatorSwitcher ctx IntelliJ建议我将其更改为SpectatorSwitcher new反而 SpectatorSwitcher 是我正
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • javascript 函数可通过 javascript_include_tag 获得,但不能通过 asset pipeline 和 application.js 获得

    如果这已经发布在其他地方 我很抱歉 但我不确定如何表达对这个问题的搜索 基本上 我有fullcalendar js坐在app assets javascripts 在我的application js文件 当然在同一文件夹中 我有以下内容 r
  • 如何在 Qemu 下启动 FreeBSD 镜像

    我有一个 FreeBSD 映像 其中包含 boot loader 和 boot kernel 等 它在 EC2 实例下启动正常 但我想使用 Qemu 启动它 我尝试过各种方法 但都没有效果 见下文 qemu system x86 64 ke
  • 将列表项映射到带有参数的函数

    有什么方法可以将列表项与参数一起映射到函数吗 我有一个清单 pages p1 p2 p3 p4 p5 我必须调用函数myFunc对应于每个列表元素以及附加参数 以便可以计算以下内容 myFunc p1 additionalArgument
  • 扩展 Handlebars.js 模板

    有没有像 Django 那样扩展模板的方法 我的基本模板有一个只需几页的标题 我想为其他模板更改它 类似的东西 extends base html endblock 我正在使用 Ember js 据我所知 这个符号不存在 我也没有在车把模板
  • 带 Boost 的 Node-gyp 包含和库目录

    我正在尝试在我的 Windows 7 计算机上构建一个 Node C 插件 该插件使用 Boost 库中的一些类 然而 运行后 node gyp configure 成功了 当我运行时 我不断受到缺少头文件的攻击 node gyp buil
  • WPF 共享资源字典

    我已经使用自定义类在我的 WPF 应用程序中实现共享资源功能 这是创建和管理字典的示例代码 public class SharedResourceDictionary ResourceDictionary
  • 如何在 UIButton 上制作原生“脉冲效果”动画 - iOS

    我希望在 UIButton 上有某种脉冲动画 无限循环 缩小 缩小 以便它立即引起用户的注意 我看到了这个链接如何使用 webkit animation 向外环创建脉冲效果 https stackoverflow com questions
  • Rails 4 + 引导程序设置资产

    我正在尝试设置引导程序 on Rails4 using bootstrap sass我收到了这个著名的错误 Sprockets FileNotFound couldn t find file bootstrap in app assets
  • 产品目录API失败

    需要帮忙 我尝试从https developers facebook com docs marketing api dynamic product ads ads management v2 3创建的帐户 批准者为phone 创建了企业帐户
  • SKShader 创建视差背景

    使用固定相机的视差背景很容易做到 但由于我正在制作一个自上而下的视图 2D 空间探索游戏 我认为有一个 SKSpriteNode 填充屏幕并作为我的 SKCameraNode 的子级并使用 SKShader 绘制一个视差星空会更容易 我继续
  • 为什么将带有尾随空格的行提交到源代码管理中是不好的?

    为什么将带有尾随空格的行签入到源代码管理中是不好的 这会导致什么类型的问题 基本上是错误的差异 如果差异仅显示 真实 更改 则会很有帮助 一些 diff 程序会忽略空格 但最好首先避免虚拟更改 当然 如果它在同事的机器上换行也无济于事
  • 第三方广告提供商的广告如何传送到网页?

    当网页加载到浏览器中时 第三方广告提供商如何决定向网页投放什么广告 这些数据以什么格式传送 假设我的网页不包含与广告相关或差异化的内容 但我确实了解我的用户的很多信息 人口统计资料 兴趣 浏览历史记录等 因此 我想要加载的广告必须依赖于用户
  • 如何使 iframe 适合整个屏幕而不指定尺寸?

    如果我不指定任何尺寸 iframe 就会显得很小 如果我确实按如下方式指定尺寸 则它无法针对不同的屏幕分辨率正确缩放 有没有办法自动让 iframe 拉伸到整个屏幕 Use
  • 如何在 SBT 构建中跳过测试?

    我有一个 SBT 0 7 5 项目 它的一些测试用例失败了 在修复所有测试用例之前 我想跳过测试来生成 JAR 是否有任何命令行参数告诉 SBT 跳过所有测试 例如 Maven 的 Dmaven test skip true flag 我遇
  • 在主线程之外创建 QDialog 的方法

    我正在尝试在 QT 中创建一个客户端应用程序 它需要两个线程进行处理和可变数量的窗口实例 但我很难弄清楚如何在处理线程之一内创建一个新窗口 我知道所有 ui 元素必须在与 QApplication 类相同的线程中创建 但我需要能够实例化 或
  • 如何使用 git fetch 覆盖本地标签?

    如何使用 git fetch 覆盖本地标签 我想用远程标签替换本地标签 从 Git 2 20 开始 您需要显式指定强制标志 git fetch origin tags force 在 Git 版本 2 20 之前 与使用 git push
  • 推送“未签出”分支

    我想推送一个分支 不是当前的 而不必先检查它 我怎样才能实现这一点 这就是我要做的 currently in master git checkout feature git push origin feature git checkout
  • seaborn boxplot:更改均值的颜色和形状

    我似乎找不到答案的简单问题 如何更改 Seaborn 箱线图中平均指标的颜色和形状 它默认为绿色三角形 通常很难看到 我试图在 seaborn 文档和 matplotlib 文档中找到答案 stackoverflow 上还有一个相关问题 有
  • Foundation 5、Simple Form 和 Rails - 如何让“提示”CSS 类正常工作

    我已经搜索了几天并进行了实验 但我无法获得要显示的简单表单 gem 提示 CSS 类 这只是一个类 当您将鼠标悬停在表单输入上时显示表单输入的提示 我正在使用 Rails 4 1 以及最新的 simple form gem 和 Founda
  • Java api 到 exiftool

    我对用 java api 或类似的东西解析 exiftool 结果很感兴趣 我一直在研究 但没有找到任何例子 例如 我如何在我的java项目中获得这些结果 Exif工具版本号 8 22 文件名 Exif工具 jpg 目录 t images