iOS、Swift、图像元数据、XMP、大疆无人机

beq87vna  于 2023-02-18  发布在  Swift
关注(0)|答案(1)|浏览(233)

我正在编写一个iOS Swift应用程序,用于从DJI无人机图像中获取元数据。我正在尝试访问Xmp. drone-dji. X元数据。iOS/Swift CGImageSource和CGImageMetadata库/类可以从图像中获取几乎所有元数据,但不能获取Xmp. drone-dji。当我获得标签列表时,这些标签/值并没有列出。我知道标签/数据在图像中,因为我使用exif检查了图像。EXIV2等。
有什么建议吗?
下面是我目前使用的代码:

result.itemProvider.loadDataRepresentation(forTypeIdentifier: UTType.image.identifier) 
{ data, err in
    if let data = data {

        let src = CGImageSourceCreateWithData(data as CFData,nil)!
        let md = CGImageSourceCopyPropertiesAtIndex(src,0,nil) as! NSDictionary
        let md2 = CGImageSourceCopyMetadataAtIndex(src,0,nil)
    }

谢谢你,鲍比

i34xakig

i34xakig1#

所以,经过大量的搜索,尝试和错误,我找到了一个答案。
我无法得到任何CGImage swift库来为我提取这些信息。
Adobe有一个C库,可以从图像中解析出xmp/xml数据,它声称支持iOS。我不想在iOS上构建C,将其导入Xcode,然后处理抛出的错误不能很好地从C++/objectiveC传播到Swift这一事实。
因此,在高层次上,我做了以下工作:
1.获取原始图像的字节作为CFData或Data,然后转换为String
1.然后使用String.range()查找图像中XML/XMP数据的开头,搜索子字符串<?xpacket begin
1.使用String.range()查找使用子字符串<?xpacket end.*?>的图像中XML/XMP数据的结尾
1.从图像数据字符串中提取XML文档
1.使用Swift XMLParser类解析XML,然后根据需要复制属性和元素。我只是简单地将我想要的添加到CGImage类返回的现有Exif NSDictionary中。
很高兴回答关于这种方法的问题。我的代码最终将被上传到OpenAthenaIOS项目下的GitHub。
巴比

相关问题