gpt4 book ai didi

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

转载 作者:技术小花猫 更新时间:2023-10-29 10:33:35 25 4
gpt4 key购买 nike

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

简单地检查 Assets 的文件名告诉我它是一个 MP4:

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

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

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,但能够确定任何类型的文件会很棒)让我知道!

最佳答案

使用 PHAssetResource。

    NSArray *resourceList = [PHAssetResource assetResourcesForAsset:asset];
[resourceList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
PHAssetResource *resource = obj;
if ([resource.uniformTypeIdentifier isEqualToString:@"com.compuserve.gif"]) {
isGIFImage = YES;
}
}];

关于ios - 如何正确检测 PHAsset 的文件类型 (GIF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35353042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com