Java中xmp标签的作用_如何在Java中从JPEG读取XMP面部数据
我已經將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面部数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java fx dialog_JavaF
- 下一篇: RAM 1500 REV 纯电皮卡开放预