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

时间:2017-12-13 08:15:56

标签: ios objective-c xcode xmp

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

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

任何希望提供帮助的人都会这样做吗?

3 个答案:

答案 0 :(得分:3)

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

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

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

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

How can I use an .a static library in swift?

以下是我的演示项目中的内容: enter image description here

我在XmpWriter.h上的实现:

#import <Foundation/Foundation.h>

@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)

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

答案 1 :(得分:2)

XMP specification PDF中显示的iOS版本支持显示这是2016年7月添加的,但这表示支持Xcode 7.2.1,因此该库可能无法使用Xcode 9,因为它不清楚它最近是否已经更新。

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

  

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

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

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

答案 2 :(得分:0)

我面临着需要读写XMP数据的类似问题,最终在Adobe的XMP ToolKit上创建了一个Objective-C包装器,以替代更自然的API。

我希望它对某人有用,您可以在Github和CocoaPods上找到它: https://github.com/IHEARTCOOKIES/XMPFramework