使用Objective-C将XMP数据嵌入到PNG中

我需要在iOS应用程序中将自定义XMP文件嵌入到PNG中。 到目前为止,我能够做的是编译生成Xcode项目的Adobe XMP工具包,然后我正确地编译了项目。

从那里我不知道如何在我的Xcode项目中使用该库以及如何使用它。 我在互联网上发现的信息非常少。

有同样希望帮助的人吗?

如果您下载了Adobe XMP Toolkit SDK,则可以在“ModifyingXMP.cpp”中找到编写XMP元数据的示例,以及在“ReadingXMP.cpp”文件中读取已经写入XMP的文件的示例。 请注意,我使用的是XMP-Toolkit-SDK-CC201607版本。

您需要稍后将静态文件和头文件包含在iOS项目中。 请仔细阅读有关如何生成它们的说明,特别是您需要哪种拱形。 在我的情况下,我分别生成了[arm64,armv7,armv7s]和[x86_64],然后将它们组合在一起。

根据您的需要尝试并修改“ModifyingXMP.cpp”。 将这些源代码作为Objective-C ++(扩展名为.mm)包含在iOS应用程序项目中。 不要忘记包含头文件,libXMPCoreStatic.a文件,libXMPFilesStatic.a文件,制作桥接头,并配置项目以导入外部静态库。 如果您不明白我在说什么,请查看以下链接:

https://forums.adobe.com/thread/1360320

如何在swift中使用.a静态库?

这是我的演示项目中的样子: 在此处输入图像描述

我在XmpWriter.h上的实现:

#import  @interface XmpWriter : NSObject +(BOOL) writeXmp:(const char *) imageUrl Param1:(const char *) Param1 Param2:(float) param2 Param3:(float) Param3; +(BOOL) readXmp:(const char *) imageUrl; @end 

在我的XmpWriter.mm文件中,我修改createXMPFromRDF()以接受我的参数,如:

 SXMPMeta createXMPFromRDF(const char *Param1, float Param2, float Param3) 

我希望你能从这里接近你想要达到的目标。

XMP规范PDF中显示的iOS构建支持显示这是在2016年7月添加的,但这表明对Xcode 7.2.1的支持,因此这个库可能无法在Xcode 9中工作,因为它不清楚它是否已经随时更新最近。

至于使用您生成的XMP示例项目的更具体方法,从上面链接的文档中,您应该能够找到一个ReadingXMP演示,该演示应该是特定于平台的(在Xcode中对您有帮助)。 该文件表明该演示将会

演示XMPFiles和XMPCore组件的基本用法,从文件获取只读XMP并通过XMP对象检查它。

您需要在命令行中编译和构建它们,来自/samples/source ,并将写入/samples/target/ 。 我认为指定的filename名将是SDK生成的Xcode项目,但正如您已经注意到那里没有太多文档。

老实说,我自己没有用过它,但我希望这会有所帮助:)。