【发布时间】:2017-03-08 10:07:27
【问题描述】:
我尝试将我的 360° 元数据图像转换为 nsdictionary。每次当我尝试打印属性值时应用程序崩溃。我写了这段代码
CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL); NSArray *metadataArray = nil;
if (source) {
_metaData = CGImageSourceCopyMetadataAtIndex(source, 0, NULL);
if (_metaData) {
metadataArray = CFBridgingRelease(CGImageMetadataCopyTags(_metaData));
CFRelease(_metaData);
}
CFRelease(source);
}
NSLog(@"%@",metadataArray[12]);//this is the problem
在输出中,我发现 immutableMetadata 的类型是 CGImageMetadata 而不是 NSdictionary。请问如何转换成nsdictionary??
【问题讨论】:
-
不清楚。我在你之前的问题上说过
CGImageSourceCopyMetadataAtIndex返回一个CGImageMetadataRef,它可以转换为NSArray和CGImageMetadataCopyTags。给出你想要的样本,因为将数组转换为字典,是否有意义?您不能将这样的事情转换为期望桥接会完成所有工作。 -
谢谢,我现在明白了,我对返回的 CGImageMetadataRef 类型感到困惑,即 Nsarray。
-
如果你想要一个字典,你可以做,但你可能必须手动做。我记录了
NSArray,它们有很多相似的类型,可以重新组合:“exif”、“tiff”、“xmp”等,但我不知道如何转换它们,检索类似的类型kCGImageMetadataPrefixExif. -
我改变了这样的代码:CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL); NSArray *metadataArray = nil; if (source) { _metaData = CGImageSourceCopyMetadataAtIndex(source, 0, NULL); if (_metaData) { metadataArray = CFBridgingRelease(CGImageMetadataCopyTags(_metaData)); CFRelease(_metaData); } CFRelease(来源); } NSLog(@"%@",metadataArray[12]);
-
它向我展示了所有类似这样的标签行:GPano:PoseHeadingDegrees = 260。我只想获得 260 的值???
标签: ios metadata nsdictionary