情况:
上传;我需要客户端检查图像是否是来自 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/