我知道如何使用Objective-c中来自PhotoKit的API(例如PHAsset,PhotoLibrary等)访问iPhone上的照片。
如何安全地确定我的代码运行所在的iPhone是否拍摄了照片?是否有可以可靠地用于此目的的任何属性(例如PHAsset或EXIF)?我的应用应仅使用实际使用当前手机相机拍摄的照片。
答案 0 :(得分:0)
首先,您需要获取图像的元数据。 如果使用PHAsset,则可以创建一些扩展以获取元数据。例如:
-(void)requestMetadataWithCompletionBlock:(PHAssetMetadataBlock)completionBlock{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
PHContentEditingInputRequestOptions *editOptions = [[PHContentEditingInputRequestOptions alloc] init];
editOptions.networkAccessAllowed = YES;
[self requestContentEditingInputWithOptions:editOptions completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) {
CIImage *image = [CIImage imageWithContentsOfURL:contentEditingInput.fullSizeImageURL];
dispatch_async(dispatch_get_main_queue(), ^{
completionBlock(image.properties);
});
}];
});
}
在词典中可以找到相机制造商。 例如:
...
Make = Apple;
Model = "iPod touch";
...
同样值得一看的ImageIO Framework,在这里您将找到一些用于元数据解析的默认键和其他有用的信息。
但是没有公开的API可以告诉您照片是当前iOS设备拍摄的。