iOS 照片框架无法获取图像数据/UTI

标签 ios objective-c photosframework

当从 Photos Framework 请求图像时,我设法正确获取了除最后 64 之外的所有图像。对于以下代码中的 dataUTIimageData,最后一个总是返回 nil。在试图弄清楚发生了什么时,我发现 PHAsset 确切地知道 UTI 是什么,但向我报告它为 nil。

还有人看过吗?

你可以看到我已经让我的代码访问 Assets 的 UTI,当它被报告为 nil 时,这样我的应用程序可以确定它是否是一个 gif,但这不是一个可取的方法,我从来没有得到 imageData 无论如何,所以这不是一个很大的帮助!

PHFetchOptions* fetchOptions = [[PHFetchOptions alloc] init];
fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
PHFetchResult *allPhotosResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options: fetchOptions];

[allPhotosResult enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger idx, BOOL *stop) {

    PHImageRequestOptions* options = [[PHImageRequestOptions alloc] init];
    options.synchronous = NO;
    options.networkAccessAllowed = YES;
    options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;

    [[PHImageManager defaultManager] requestImageDataForAsset: asset options: options resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {
         NSString* val = [asset valueForKey: @"uniformTypeIdentifier"];
         if( !dataUTI )
         {
             dataUTI = val;
         }
    }];
}];

编辑: 我忘了提到丢失的图像创建日期不是最新的图像,而且似乎分散了。实际上,根据它们的创建日期,即使是照片应用程序似乎也不会显示它们。但似乎没有什么是 应该 的,因为他们的位置是看他们的创作日期所在的相邻图像。

最佳答案

这里没有太多的答案,很高兴有人能乐于解释它!

查看丢失 Assets 的创建日期,我设法在我的应用程序中丢失的照片应用程序中找到了一个。它有一个缩略图,但是当我选择它时,它会使用循环下载指示器来下拉数据,然后尝试在我的应用程序的 Action Extension 中打开它(让您在照片应用程序或其他地方预览 gif 动画)出现一个弹出窗口说准备它时出错。我以前没见过,但显然 iCloud 出了点问题。

以前我在我的应用程序中请求 PHImageRequestOptionsVersionUnadjusted 但将其切换为 PHImageRequestOptionsVersionOriginal 似乎已经修复了它......?

关于iOS 照片框架无法获取图像数据/UTI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30613492/

相关文章:

ios - 将 UIImage 保存到 PHAssetCollection

swift - 理解快速类型别名

iOS 在照片框架查询中从 Whatsapp 中排除图像

iphone - ios如何访问和修改不同类的变量?

ios - 如何从现有的 iPhone 项目中删除 Storyboard

ios - 如何处理人脸ID权限提醒?

ios - 如何在 Objective-C 中为 pin mapview 中的文本添加事件处理程序?

ios - loadView: UIView iOS 中的函数

iphone - 获取 UIPinchGestureRecognizer 手指位置

iPhone:超出范围 [0 .. 8]'