Я понятия не имею, почему это так сложно. Я пытаюсь определить тип файла PHAsset, в частности, я хочу знать, представляет ли данный объект изображение GIF или нет.
Просто проверка имени файла ресурса говорит мне, что он MP4:
[asset valueForKey:@"filename"] ==> "IMG_XXXX.MP4"
Поддерживает ли iOS преобразование GIF в видеоролики при сохранении в библиотеке изображений устройств? Я также попытался извлечь данные изображения и посмотреть на него dataUTI, но он просто возвращает nil
для GIF (я тоже принимаю все видео). Я извлекаю данные изображения следующим образом:
PHImageManager *manager = asset.imageManager ? asset.imageManager : [PHImageManager defaultManager];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
PHImageRequestOptions *o = [[PHImageRequestOptions alloc] init];
o.networkAccessAllowed = YES;
[manager requestImageDataForAsset:asset.asset options:o resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) {
dispatch_async(dispatch_get_main_queue(), ^{
CIImage *ciImage = [CIImage imageWithData:imageData];
if(completion) completion(imageData, dataUTI, orientation, info, ciImage.properties);
});
}];
});
dataUTI, возвращенный из вышеуказанного вызова, nil
.
Если кто-то знает о надежном способе определения типа файла PHAsset (я специально ищу GIF, но возможность определить для любого типа файлов будет замечательным), дайте мне знать!