小编mit*_*ece的帖子

如何正确检测PHAsset的文件类型(GIF)

我不知道为什么这么难.我正在尝试确定PHAsset的文件类型,具体来说,我想知道给定的资产是否代表GIF图像.

只需检查资产的文件名告诉我它是MP4:

[asset valueForKey:@"filename"] ==> "IMG_XXXX.MP4"

iOS保存到设备图像库时,是否会将GIF转换为视频?我也尝试获取图像的数据并查看它的dataUTI,但它只返回nilGIF(我也假设所有视频).我正在获取图像数据如下:

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);
        });

    }];

});
Run Code Online (Sandbox Code Playgroud)

从上面的调用返回的dataUTI是nil.

如果有人知道确定PHAsset文件类型的可靠方法(我特意寻找GIF,但能够确定任何类型的文件会很棒)请告诉我!

objective-c gif photos ios phasset

13
推荐指数
4
解决办法
6127
查看次数

标签 统计

gif ×1

ios ×1

objective-c ×1

phasset ×1

photos ×1