如何检测照片是否用iPhone拍摄

时间:2019-03-20 17:10:16

标签: ios objective-c photokit

我知道如何使用Objective-c中来自PhotoKit的API(例如PHAsset,PhotoLibrary等)访问iPhone上的照片。

如何安全地确定我的代码运行所在的iPhone是否拍摄了照片?是否有可以可靠地用于此目的的任何属性(例如PHAsset或EXIF)?我的应用应仅使用实际使用当前手机相机拍摄的照片。

1 个答案:

答案 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设备拍摄的。