XMP-Toolkit-SDK 编译与示例程序

一、前言

最近在调研图片的元数据读写方案,需要了解 XMP 空间以及如何在 XMP 空间中读写元数据,本文做一个相关内容的记录。

XMP-Toolkit-SDK 以及 XMP标准简介

XMP-Toolkit-SDK 是 Adobe 提供的一套开源软件开发工具包(SDK),用于创建、读取、修改、序列化和操作 XMP(eXtensible Metadata Platform)元数据。XMP 是一种标准,用于在多种文件格式(如 JPEG、TIFF、PDF、RAW 图像等)中嵌入描述性元数据,比如作者名、版权信息、GPS 坐标、拍摄设置等。

主要用途:

  • 解析和生成 XMP 元数据:方便地从支持 XMP 的文件中读取或写入元数据。
  • 元数据管理:集成到各种工作流中(如数字资产管理、图片管理系统)。
  • 跨平台支持:SDK 支持多平台,包括 Windows、macOS 和 Linux。

二、编译

本章介绍如何在不同平台下编译 XMP-Toolkit-SDK

2.1 准备工作

首先需要下载 XMP-Toolkit-SDK 源代码,直接 git clone 即可

bash 复制代码
git clone git@github.com:adobe/XMP-Toolkit-SDK.git

然后将三方库的编译文件准备好,需要用到的三方库包括 expat 和 zlib。

首先是 expat,步骤如下:

  1. http://sourceforge.net/projects/expat/files/expat/2.5.0/ 或者在 libexpat-github 下载源码
  2. 接着将 lib 文件下整个拷贝至 XMP-Toolkit-SDK/third-party/expat 下即可,目录树如下:
bash 复制代码
.
├── expat
│   ├── ReadMe.txt
│   └── lib

接着是 zlib,步骤如下:

  1. zlib 主页中有源码下载链接 https://www.zlib.net/zlib-1.3.1.tar.gz,下载它,解压它
  2. 将所有 .h 和 .c 拷贝至 XMP-Toolkit-SDK/third-party/zlib 即可
bash 复制代码
cp *.c /pathto/XMP-Toolkit-SDK/third-party/zlib
cp *.h /pathto/XMP-Toolkit-SDK/third-party/zlib

2.2 不同平台编译

这部分在 XMPAddendumProgrammersGuide.pdf 57 页有很详细的描述。我实际编译下来发现有些平台按照文档编译会出现错误,这边也记录下我是如何修改的。

2.2.1 Mac 平台

运行 GenerateXMPToolkitSDK_mac.sh,输入选项生成不同目标的 xcode 工程

复制代码
bash GenerateXMPToolkitSDK_mac.sh

GenerateXMPToolkitSDK_mac.sh: line 13: cd: GenerateXMPToolkitSDK_mac.sh: Not a directory
1. Clean All
2. Generate XMPToolkitSDK Dynamic 64
3. Generate XMPToolkitSDK Static  64
4. Generate XMPToolkitSDK Static iOS
5. Generate XMPToolkitSDK Dynamic iOS
6. Generate All
Enter your choice: 

使用 xcode 打开工程文件,编译即可。注意,如果提示编译 sdk 找不到,可以在 XMP-Toolkit-SDK/build/shared/ToolchainLLVM.cmake 修改 XMP_OSX_SDK 为本机 sdk 版本。

2.2.2 Android 平台

Android 平台编译按照文档来做发现编译失败,后面对编译脚本稍作修改后运行成功。首先修改 GenerateAndBuildXMPToolkitSDK_android.sh 做如下修改:

  1. 54 行,Android Gradle - Ninja 修改为 Ninja
  2. 71 行,TOOLCHAIN 修改为 TOOLCHAIN="${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake"
  3. 72 行,cmake_ndkpath 修改为 cmake_ndkpath=${ANDROID_NDK_HOME}

接着,添加软连接到 tools/android 目录下

bash 复制代码
cd XMP-Toolkit-SDK/tools/android
ln -s ~/Library/Android/sdk/cmake/3.22.1/bin/cmake
ln -s ~/Library/Android/sdk/cmake/3.22.1/bin/ninja

最后,设置 ANDROID_NDK_HOME 后运行脚本 GenerateAndBuildXMPToolkitSDK_android.sh 即可

bash 复制代码
export ANDROID_NDK_HOME=/Users/user/Library/Android/sdk/ndk/21.1.6352462
bash GenerateAndBuildXMPToolkitSDK_android.sh

三、编译示例程序

XMP-Toolkit-SDK 中提供了多个示例程序,编译它们也很简单,以 mac 平台为例,运行 XMP-Toolkit-SDK/samples/build/GenerateSamples_mac.sh 即可。注意,需要修改脚本中一些变量,以便编译成功。修改如下:

  1. 15 行,CMAKE 变量修改为你本机的 cmake 路径
  2. 121 行,TOOLCHAIN 变量修改为 XMP-Toolkit-SDK/build/shared/ToolchainLLVM.cmake 即可

运行脚本结束后,在同目录的会生成 xcode 目录,里头有工程文件,打开即可。

参考

  1. https://github.com/adobe/XMP-Toolkit-SDK
  2. XMPAddendumProgrammersGuide.pdf
相关推荐
加油201913 小时前
音视频处理(一):什么决定了你的音色?声音的三要素
音视频·音色·声音三要素
mit6.8241 天前
[Sora] 视频自动编码器(VAE) | `encode_`&`decode`
音视频
Jeled1 天前
Kotlin 实现社交 App 音视频模块:语音录制、播放、暂停与进度控制全流程封装
android·kotlin·android studio·音视频
努力犯错1 天前
AI视频修复技术入门:从Sora水印谈起,我们如何“抹去”未来影像的瑕疵?
大数据·人工智能·语言模型·开源·音视频
1024小神2 天前
xr-frame微信小程序xr-ar-tracker实现video视频竖屏或横屏播放
ar·音视频·xr
我血条子呢2 天前
[HTML]播放wav格式音频
前端·html·音视频
zzfive2 天前
Ovi-音视频生成模型
论文阅读·人工智能·深度学习·音视频
给大佬递杯卡布奇诺2 天前
FFmpeg 基本API avio_read函数内部调用流程分析
c++·ffmpeg·音视频
深圳市青牛科技实业有限公司2 天前
在电力系统、电子设备制造等领域,变压器测试感量,电桥内阻如何选择
嵌入式硬件·音视频·制造·立体声收录机·盒式录音机·电子烟
互联科技报2 天前
机器人能否实现远程视频通话方便家属探视老人
机器人·音视频