ios - 从 NSData 读取 XMP 元数据

标签 ios image

情况:
上传;我需要客户端检查图像是否是来自 Theta S 或 Gear 360 等相机的 360° 图像。
这应该很容易通过检查 XMP 元数据来完成。

但是,ImageIO 似乎忽略了 XMP 元数据,如果您运行下面的示例,则 ImageIO 返回的数据中没有 XMP-entry。

swift 3:

import ImageIO

let url = URL(fileURLWithPath: filePath)
let imageData:Data = try! Data(contentsOf: url)

if let imageSource = CGImageSourceCreateWithData(imageData as CFData, nil),
   let imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, nil) as? [AnyHashable:Any]
{
    print(imageProperties) // no xmp metadata?
}

有什么方法可以从图像 NSData 中减去 XMP-xml?

最佳答案

我发现您可以通过 CGImageSourceCopyMetadataAtIndex 访问此信息.

粗略的代码示例:

swift 3:

if let imageSource = CGImageSourceCreateWithData(nsData as CFData, nil),
    let imageProperties = CGImageSourceCopyMetadataAtIndex(imageSource, 0, nil) {
    var result:String = ""
    CGImageMetadataEnumerateTagsUsingBlock(imageProperties, nil, nil, { (key, tag) -> Bool in
        let tagString:NSString = CGImageMetadataTagCopyName(tag) as! NSString
        if tagString == "ProjectionType" {
            result = CGImageMetadataTagCopyValue(tag) as! NSString
            return false
        }
        return true
    })

    print(result) //equirectangular
}

关于ios - 从 NSData 读取 XMP 元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40286468/

相关文章:

iphone - 从另一个 View Controller 的内存中杀死 View / View Controller

jquery - 如何为图像创建 3D 效果?

JavaScript 代码解释。图像序列

java - 从带有 JAVA 查询参数的链接下载图像

ios - 在 Swift 3 中显示从 user.uid 到用户名的 firebase child

objective-c - Xcode 的多合一共享框架

javascript - 在 highcharts 中导出时如何添加图像?

javascript - 使用Javascript将图像从url保存到HDD

html - 图像高度是相对于文件大小而不是父 div(整页水平滚动画廊)

iphone - iPhone 上的 ARP 请求