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

问题描述 投票:0回答:1

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

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

ios objective-c photokit
1个回答
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设备拍摄的。

© www.soinside.com 2019 - 2024. All rights reserved.