iOS 照片框架无法获取图像数据/UTI
iOS Photos framework unable to get image data / UTI
当从 Photos Framework 请求图像时,我设法正确获取了除最后 64 之外的所有图像。对于以下代码中的 dataUTI
和 imageData
,最后一个总是 return nil。在试图弄清楚发生了什么的同时,我发现 PHAsset
确切地知道 UTI 是什么,但是向我报告它为零。
还有其他人看到了吗?
你可以看到我已经让我的代码在报告为 nil 时访问资产的 UTI,这样我的应用程序可以确定它是否是 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;
}
}];
}];
编辑:
我忘了提到丢失的图像创建日期不是最新的图像,而且似乎分散了。实际上,根据它们的创建日期,即使是照片应用程序似乎也不会显示它们。但是似乎没有任何东西 应该 在他们的位置上查看他们的创建日期将放置他们的相邻图像。
这里的答案不多,很高兴有人能bash解释一下!
查看丢失资产的创建日期,我设法在我的应用程序中丢失的照片应用程序中找到了一个。它有一个缩略图,但当我选择它时,它会使用循环下载指示器来下拉数据,然后尝试在我的应用程序的 Action Extension 中打开它(让你在照片应用程序或其他地方预览 gif 动画)出现一个弹出窗口说准备它时出错。我以前没见过,但显然 iCloud 出了点问题。
之前我在我的应用程序中请求 PHImageRequestOptionsVersionUnadjusted
但将其切换到 PHImageRequestOptionsVersionOriginal
似乎已经修复了....?
当从 Photos Framework 请求图像时,我设法正确获取了除最后 64 之外的所有图像。对于以下代码中的 dataUTI
和 imageData
,最后一个总是 return nil。在试图弄清楚发生了什么的同时,我发现 PHAsset
确切地知道 UTI 是什么,但是向我报告它为零。
还有其他人看到了吗?
你可以看到我已经让我的代码在报告为 nil 时访问资产的 UTI,这样我的应用程序可以确定它是否是 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;
}
}];
}];
编辑: 我忘了提到丢失的图像创建日期不是最新的图像,而且似乎分散了。实际上,根据它们的创建日期,即使是照片应用程序似乎也不会显示它们。但是似乎没有任何东西 应该 在他们的位置上查看他们的创建日期将放置他们的相邻图像。
这里的答案不多,很高兴有人能bash解释一下!
查看丢失资产的创建日期,我设法在我的应用程序中丢失的照片应用程序中找到了一个。它有一个缩略图,但当我选择它时,它会使用循环下载指示器来下拉数据,然后尝试在我的应用程序的 Action Extension 中打开它(让你在照片应用程序或其他地方预览 gif 动画)出现一个弹出窗口说准备它时出错。我以前没见过,但显然 iCloud 出了点问题。
之前我在我的应用程序中请求 PHImageRequestOptionsVersionUnadjusted
但将其切换到 PHImageRequestOptionsVersionOriginal
似乎已经修复了....?