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
相关推荐
qq_310658519 小时前
mediasoup源码走读(十)——producer
服务器·c++·音视频
小咖自动剪辑11 小时前
自动批量混剪视频软件配置流程
实时互动·音视频·语音识别·实时音视频·视频编解码
vfvfb12 小时前
根据srt去掉无人声的地方 视频保留对白 视频去掉没有说话的段
音视频·根据srt去掉无人声的地方·视频保留对白·视频去掉对白间隙
玩转以太网15 小时前
W55MH32L 单芯片以太网方案:实现网络音频高品质低延迟传输
音视频·以太网·硬件tcp/ip
白狐_79815 小时前
Google (Flow) 完全使用指南:从入门到精通AI视频生成
人工智能·音视频
EasyCVR16 小时前
视频汇聚平台EasyCVR打造地下车库智慧监控安防新体系
音视频
EasyDSS16 小时前
视频推流平台EasyDSS无人机推流直播筑牢警务安防技术防线
音视频·无人机
中年程序员一枚17 小时前
不想花钱买会员,自己动手用python制作视频
开发语言·python·音视频
veteranJayBrother17 小时前
适配小程序的下滑上滑播放视频组件
小程序·apache·音视频
音视频牛哥18 小时前
C#实战:如何开发设计毫秒级延迟、工业级稳定的Windows平台RTSP/RTMP播放器
人工智能·机器学习·机器人·c#·音视频·rtsp播放器·rtmp播放器