Google Camera の新しい深度マップ生成機能を利用することになっている Android アプリケーションを開発しています。
ここで使用するメタデータは基本的に Google が説明しています
ほとんどのメタデータにアクセスできますが、残念ながら最も重要なデータは extendedXmp としてエンコードされており、それを正しく解析するための XMP 解析ライブラリを取得できません!
Commons-Imaging、metadata-extractor、そして最近では Adobe XMPCore を試しました
XMPCore は拡張バージョンを処理できる可能性がありますが、生の XMP データが渡されることを前提として、JPG ファイルからデータを解析する方法を説明するドキュメントはありません。
JPGファイルの拡張部分を含むXMP解析の正しい実装はありますか、それとも何か間違っていますか?
これが私の試みです:
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();
}

