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

Ios 如何检测照片是否是用iPhone拍摄的,ios,objective-c,photokit,Ios,Objective C,Photokit,我知道如何使用objective-c中PhotoKit(如Phaset、PhotoLibrary等)的API访问iPhone上的照片 我如何才能安全地确定照片是否是用运行我的代码的iPhone拍摄的?是否有任何属性(如相集或EXIF)可以可靠地用于此?我的应用程序应该只使用使用当前手机摄像头拍摄的照片。首先,您需要获取图像的元数据。 在使用PHAsset的情况下,您可以创建一些扩展来获取元数据。例如: -(void)requestMetadataWithCompletionBlock:(PHAs

我知道如何使用objective-c中PhotoKit(如Phaset、PhotoLibrary等)的API访问iPhone上的照片


我如何才能安全地确定照片是否是用运行我的代码的iPhone拍摄的?是否有任何属性(如相集或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";
      ...
在字典里你可以找到照相机制造商。 例如:

-(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";
      ...
同样值得一看的是,这里您将找到一些用于元数据解析的默认键和其他有用的信息


但是没有公共API告诉您照片是由当前的iOS设备拍摄的。

首先,您需要获取图像的元数据。 在使用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";
      ...
在字典里你可以找到照相机制造商。 例如:

-(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";
      ...
同样值得一看的是,这里您将找到一些用于元数据解析的默认键和其他有用的信息


但是没有公共API告诉您照片是由当前的iOS设备拍摄的。

我对此表示怀疑。它会告诉你是哪种型号的iPhone,但仅此而已,我对此表示怀疑。它会告诉你是哪种型号的iPhone,但仅此而已。问题的标签是Objective-C,而不是Swift。请用适当的语言发布答案,但这并不能回答问题。问题是,这张照片是否是在应用程序运行的当前iOS设备上拍摄的。@RomanTsymbaliuk感谢您指出如何访问元数据。然而,我的问题的重要部分是可靠地确定照片是用我的应用程序运行的设备拍摄的。您还提到没有公共API告诉我这一点。我仍然希望得到一个不同的答案。如果没有,我会把你的帖子标记为答案。问题的标签是Objective-C,而不是Swift。请用适当的语言发布答案,但这并不能回答问题。问题是,这张照片是否是在应用程序运行的当前iOS设备上拍摄的。@RomanTsymbaliuk感谢您指出如何访问元数据。然而,我的问题的重要部分是可靠地确定照片是用我的应用程序运行的设备拍摄的。您还提到没有公共API告诉我这一点。我仍然希望得到一个不同的答案。如果没有,我就把你的帖子作为答案。