我知道如何使用 Objective-c 中的 PhotoKit(例如 PHAsset、PhotoLibrary 等)中的 API 来访问 iPhone 上的照片。
如何安全地确定照片是否是用运行我的代码的 iPhone 拍摄的?是否有任何属性(例如 PHAsset 或 EXIF)可以可靠地用于此目的?我的应用应该只使用当前手机相机实际拍摄的照片。
最佳答案
首先,您需要获取图像的元数据。 如果使用 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 ,在这里您将找到一些用于元数据解析的默认键和其他有用的信息。
但是没有公共(public) API 可以告诉您照片是由当前 iOS 设备拍摄的。
关于ios - 如何检测照片是否是用 iPhone 拍摄的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55266541/