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
相关推荐
RTC实战笔记5 天前
Android 实时音视频接入教程:媒体补充增强信息(SEI)
音视频·媒体·rtc
潜创微科技6 天前
HDMI1.3 无线传输芯片方案 空旷 150 米量产级音视频方案
音视频
VidDown6 天前
VidDown 工具站:免费、本地优先的开发者工具箱
javascript·编辑器·音视频·视频编解码·视频
换个昵称都难6 天前
音频格式之WAV
音视频
AI创界者6 天前
PilotTTS 一键整合包(Win/Mac):8G 显存畅跑,实测解锁情绪与副语言的精准控制
人工智能·macos·aigc·音视频
u152109648496 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频
VidDown6 天前
显卡处理视频技术详解:从硬解码到 NVENC,GPU 如何让视频处理起飞?
javascript·编辑器·音视频·视频编解码·视频
EasyDSS6 天前
全能音视频平台/私有化音视频系统EasyDSS!直播/点播/会议/集群对讲一站式落地
音视频
Damon_X6 天前
车载音频复习
音视频
3DVisionary6 天前
告别数据中断:XTDIC-VG视频引伸计在金属疲劳测试中3个真实案例
人工智能·音视频·应用案例·xtdic-vg·视频引伸计·疲劳测试·实战复盘