Exiv2 With XMP for Android

本文介绍了如何在Android平台上使用Exiv2库处理XMP元数据,特别是对于VR图片的360度元数据处理。通过编译Exiv2和其依赖Expat,以及解决编译过程中的问题,最终在Android上构建出用于处理XMP的JNI库。
摘要由CSDN通过智能技术生成

Exiv2 With XMP for Android

摘要

最近在从事VR行业,工作中需要将VR相机拍摄的360图片被各大VR平台识别,比如Facebook、Google Photo、LINE等。这些平台都是遵循google定的一套VR协议,详细可参考链接https://developers.google.com/streetview/spherical-metadata?hl=zh-cn。这些信息都是保存到图片的XMP(XMP stands for “Extensible Metadata Platform”, an XML/RDF-based metadata format which is being pushed by Adobe. Information in this format can be embedded in many different image file types including JPG, JP2, TIFF, GIF, EPS, PDF, PSD, IND, INX, PNG, DJVU, SVG, PGF, MIFF, XCF, CRW, DNG and a variety of proprietary TIFF-based RAW images, as well as MOV, AVI, ASF, WMV, FLV, SWF and MP4 videos, and WMA and audio formats supporting ID3v2 information.)中,PC端有一些工具可以通过python脚本做处理,但是在Android端就很难找到现有的工具使用了。
一次偶然的机会,看到了Exiv2这个开源工具,能够支持XMP的读写,更可贵的是,最新版上已经默认支持google 360 metadata。这里写图片描述

Exiv2是C++编写,支持交叉编译,在Ubuntu、Linux、Windows都可以直接下载编译好的版本进行使用。如果需要在Android端使用,就需要基于源码进行单独编译。


编译环境

安装独立工具链

您可以独立使用 Android NDK 附带的工具链,或将其作为插件与现有 IDE 结合使用。 如果您已有自己的构建系统,且仅需要调用交叉编译器功能以将对构建系统的支持添加到 Android,则这种灵活性非常有用。 —— [ Android Developer ]

安装命令如下:

./make-standalone-toolchain.sh --platform=android-21 --install-dir=~/my-android-toolchain --ndk-dir='${yourNdkPath}' --toolchain=arm-linux-androideabi-4.9

需要注意的是,Exiv2如果使用低于android-21的platform进行编译,会报crwimage.cpp中某个方法无法找到的错误。
安装独立工具链的好处是将编译所需要的所有文件都拷贝到一个文件夹下,能够在编译过程中更好的link到依赖的头文件和库文件。

编译Expat

Expat是一个用C语言开发的、用来解析XML文档的开发库,它最初是开源的、Mozilla 项目下的一个XML解析器。 —— [ 百度百科]

如文章开头所述,图片的XMP信息是基于xml的ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值