【发布时间】:2014-04-23 19:17:06
【问题描述】:
我正在开发应该利用 Google 相机的新深度图生成功能的 Android 应用程序。
基本上谷歌已经描述了使用的元数据here
我可以访问大部分元数据,但不幸的是最重要的数据被编码为extendedXmp,我无法获得任何XMP解析库来正确解析它!
我已经尝试过 Commons-Imaging、元数据提取器和最近的 Adobes XMPCore
XMPCore 可能能够处理扩展版本,但没有文档如何让它解析 JPG 文件中的数据,它假设要传递原始 XMP 数据
是否有任何正确的 XMP 解析实现,包括 JPG 文件的扩展部分,或者我只是做错了什么?
这是我的尝试:
使用 Commons-Imaging:
try {
String imageParser = new JpegImageParser().getXmpXml(new ByteSourceInputStream(imageStream, "img.jpg"), new HashMap<String, Object>());
Log.v(TAG, imageParser);
} catch (ImageReadException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
使用元数据提取器
Metadata metadata = ImageMetadataReader.readMetadata(
new BufferedInputStream(imageStream), false);
XmpDirectory xmp = metadata
.getDirectory(XmpDirectory.class);
XMPMeta xmpMeta = xmp.getXMPMeta();
String uri = "http://ns.google.com/photos/1.0/depthmap/";
Log.v(TAG, xmpMeta.doesPropertyExist(uri, "GDepth:Format") + " " );
try {
XMPProperty hasExtendedXMP = xmpMeta.getProperty("http://ns.adobe.com/xmp/note/", "xmpNote:HasExtendedXMP");
Log.v(TAG, hasExtendedXMP.getValue().toString() + " " + new String(Base64.decode(hasExtendedXMP.getValue().toString(), Base64.DEFAULT)));
} catch (XMPException e) {
e.printStackTrace();
}
【问题讨论】: