我已经将Picasa的面部数据保存在JPEG文件中(在XMP中),现在我试图用Java读取该信息.到目前为止,我失败了,将不胜感激.

我正在尝试使用metadata-extractor库(尽管任何其他解决方案也可以).我可以阅读基本信息(例如日期,图像尺寸等),但是我在提取其他数据时迷失了方向.这是到目前为止我得到的:

File file -- this is my JPEG file

Metadata metadata = JpegMetadataReader.readMetadata(file);

XmpDirectory xmpDirectory = metadata.getDirectory(XmpDirectory.class);

XMPMeta xmpMeta = xmpDirectory.getXMPMeta();

System.out.println(xmpMeta.dumpObject());

结果:

ROOT NODE

http://www.metadataworkinggroup.com/schemas/regions/ = "mwg-rs:" (0x80000000 : SCHEMA_NODE)

mwg-rs:Regions (0x100 : STRUCT)

mwg-rs:AppliedToDimensions (0x100 : STRUCT)

stDim:h = "2793"

stDim:unit = "pixel"

stDim:w = "2047"

mwg-rs:RegionList (0x200 : ARRAY)

[1] (0x100 : STRUCT)

mwg-rs:Area (0x100 : STRUCT)

stArea:h = "0.69531"

stArea:unit = "normalized"

stArea:w = "0.790425"

stArea:x = "0.491451"

stArea:y = "0.41783"

mwg-rs:Name = "abcde"

mwg-rs:Type = "Face"

http://ns.adobe.com/xap/1.0/ = "xmp:" (0x80000000 : SCHEMA_NODE)

xmp:ModifyDate = "2014-04-06T19:43:24+01:00"

我不明白如何到达这些stArea:w,mwg-rs:Type =“ Face”等.

解决方法:

像往常一样,在发布后立即有found a solution.我将在下面列出以将其放在此处.

try {

Metadata metadata = ImageMetadataReader.readMetadata(imageFile);

XmpDirectory xmpDirectory = metadata.getDirectory(XmpDirectory.class);

XMPMeta xmpMeta = xmpDirectory.getXMPMeta();

XMPIterator itr = xmpMeta.iterator();

while (itr.hasNext()) {

XMPPropertyInfo pi = (XMPPropertyInfo) itr.next();

if (pi != null && pi.getPath() != null) {

if ((pi.getPath().endsWith("stArea:w")) || (pi.getPath().endsWith("mwg-rs:Name")) || (pi.getPath().endsWith("stArea:h")))

System.out.println(pi.getValue().toString());

}

}

} catch (final NullPointerException npe) {

// ignore

}

我在这里不喜欢的是,它遍历所有属性,而不仅仅是读取必需的属性.有更好(更快)的解决方案吗?

标签:picasa,xmp,metadata-extractor,java

来源: https://codeday.me/bug/20191121/2054131.html

Java中xmp标签的作用_如何在Java中从JPEG读取XMP面部数据相关推荐

  1. shell中竖线的作用_如何在 Linux 中安装、配置和使用 Fish Shell?

    每个 Linux 管理员都可能听到过 shell 这个词.你知道什么是 shell 吗? 你知道 shell 在 Linux 中的作用是什么吗? Linux 中有多少个 shell 可用? -- Ma ...

  2. java从数组查找指定整数_如何在Java中使用重复项查找整数数组中的K个缺失数字?...

    java从数组查找指定整数 自从我讨论任何编码或算法面试问题以来已经有很长时间了,因此我想重新考虑一种最流行的基于数组的编码问题,即在给定数组中查找缺失的数字. 在进行编程工作面试之前,您可能已经听说 ...

  3. java中md5加密和解密_如何在java中实现md5加密和解密

    如何在java中实现md5加密和解密 关注:273  答案:1  mip版 解决时间 2021-01-19 20:37 提问者精神疯裂 2021-01-19 05:36 如何在java中实现md5加密 ...

  4. java创建一个不可变对象_如何在Java中创建不可变类?

    java创建一个不可变对象 Today we will learn about the immutable class in Java. What are immutable classes? The ...

  5. java 反射父类私有属性值_如何在Java中通过反射访问父类的父类的私有字段? - java...

    在一个API中,我使用的是一个抽象类(A类),该类具有一个私有字段(A.privateField). B类在API中扩展了A类. 我需要扩展B类的实现,即C类,但是我需要A类的privateField ...

  6. java中如何设置字体样式_如何在JAVA中设置字体样式和大小?

    我是新来的Java和无法弄清楚如何格式化我的代码是这样的: 字体"宋体"字体大小"9"大胆如何在JAVA中设置字体样式和大小? 我想整个段落的格式化文本.我真的 ...

  7. python中none是什么类型_如何在Python中”测试”None类型?

    我有一个方法,它有时返回一个非类型的值.那么我怎样才能质疑一个非类型的变量呢?例如,我需要使用if方法 if not new: new = '#' 我知道这是错误的方式,我希望你理解我的意思. 我想这 ...

  8. php oracle 操作 sql语句中能不能添加数组_如何在PHP中使用Oracle数据库_php

    在php3.0以上版本中,php内置了几乎目前所有的数据库处理函数,包括oracle;在本文中我们通过一个实例来介绍了如何使用这些函数来操作Oracle数据库. PHP提供了2大类API(应用程序接口 ...

  9. mysql中用户权限的授予_如何在MySQL中创建用户和授予权限

    如何创建MySQL用户并授予权限?为了实现良好的安全性,需要为每个应用程序创建单独的用户帐户,而不是root用户访问数据库.这将确保应用程序无法访问其他应用程序的数据库.因此需要mysql管理员(ro ...

最新文章

  1. 【转载】ogre内存管理
  2. Vue2.0项目中使用sass(踩坑之路)
  3. python怎么对齐文件_说说在 python 中,如何对齐文本
  4. 【探秘ES6】系列专栏(二):迭代器和for-of循环
  5. ASP.NET进阶(8):HttpModule和HttpApplication
  6. Centos7.4 yum 安装MariaDB
  7. 领导:“请在今晚进行网络系统升级”
  8. hdu4540---DP入门
  9. python模拟登录12306_python基于selenium模块实现自动登录12306网站
  10. UE4 C++如何关闭进程?
  11. ExactScan Pro 18.12.24 Mac 破解版 万能扫描仪整合工具
  12. netty面试题及答案
  13. sublime主题选择
  14. 数字转型遇阻 ,Riverbed重塑APM工具
  15. Android开发之自定义圆角矩形图片ImageView
  16. Mitmproxy代理设置和证书安装
  17. MATLAB用rbf拟合sinx,为什么径向基(RBF)网络拟合度很差呢?
  18. bzoj 4399 魔法少女LJJ
  19. 5位评委对参赛选手进行打分,将所有的打分结果存储到对应类型的数组中, 将所有的评分结果去除一个最低分,去除一个最高分,然后获取的平均分数为 选手的最终得分.设计程序,用键盘输入5位评委的评分,并打印输
  20. 朱志星:道路交通事故“减量控大”技术治理思路和对策

热门文章

  1. BacNet开发入门2
  2. html如何复用其它页面,编写可以复用的 HTML 模板
  3. 替换html标签内容正则表达式,正则表达式,替换所有HTML标签的简单实例
  4. python selenium_Python+selenium自动化测试
  5. 基于控制台应用程序的生命游戏java_Java在现实中实际开发的主要领域在哪些方面?...
  6. html文本分类输出,构建中文网页分类器对网页进行文本分类
  7. Android开发之使用TabLayout快速实现选项卡切换功能(附源码下载)
  8. Ajax POST请求获取后台返回的数据
  9. oracle alter_log,在线查看alter.log文件内容
  10. Kubernetes上的负载均衡详解