Как определить, была ли фотография сделана на iPhone - PullRequest
0 голосов
/ 20 марта 2019

Я знаю, как получить доступ к фотографиям на iPhone с помощью API из PhotoKit (например, PHAsset, PhotoLibrary, ...) из target-c.

Как можно безопасно определить, была ли фотография сделана сiPhone, на котором работает мой код?Есть ли какие-либо свойства (например, PHAsset или EXIF), которые можно надежно использовать для этого?Мое приложение должно использовать только те фотографии, которые были сделаны с использованием камеры текущего телефона.

1 Ответ

0 голосов
/ 20 марта 2019

Прежде всего вам необходимо получить метаданные изображения. В случае использования 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...