首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS照片框架数据UTI或图像在云中时的格式

iOS照片框架数据UTI或图像在云中时的格式
EN

Stack Overflow用户
提问于 2015-05-21 07:27:42
回答 3查看 1.9K关注 0票数 1

我正在升级我的GIF应用程序以使用iOS 8照片框架,基本上我希望在他们的照片库中找到所有用户的GIF并显示它们。在ALAssetLibrary图片库的“优化存储”发挥作用之前,iCloud图片库的工作非常好,因为现在用户可以在云中拥有大量的图像,因此需要使用Photos来获取它们,不幸的是,在您从云中下载它之前,您似乎无法判断PHAsset是GIF还是普通的静态映像……这会让我的应用在你没有网络连接或者网络连接差的时候变得很差劲.

这是我尝试只获取GIF的代码:

代码语言:javascript
复制
PHFetchOptions* fetchOptions = [[PHFetchOptions alloc] init];
            fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
            PHFetchResult *allPhotosResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options: fetchOptions];

            //   Get assets from the PHFetchResult object
            [allPhotosResult enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger idx, BOOL *stop) {
                //NSLog(@"asset %@", asset);
                PHImageRequestOptions* options = [[PHImageRequestOptions alloc] init];
                options.synchronous = YES;
                options.deliveryMode = PHImageRequestOptionsDeliveryModeFastFormat;
[imageManager requestImageDataForAsset: asset options: options resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {

// when the item is in the cloud dataUTI is nil so I can't check what format it is...

}

信息字典包含一些未记录的密钥:

  • PHImageResultDeliveredImageFormatKey
  • PHImageResultWantedImageFormat

我见过的值为9999、9998和40xx。但它们似乎与图像是否是GIF没有特别的关系,所以必须与其他的东西完全相关.

有什么主意吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-03 18:50:53

看起来,在不从云中提取图像并检查之后,就没有办法解决这个问题。我正在更新我的应用程序,但是要记住PHAssetlocalIdentifier上的每一张图片的类型,这样它只需要做一次。

如果您采用这种方法,您也可能希望避免PHAsset,因为它们代表突发、HDR或全景图像,因为它们不会是gifs (显然也不包括视频!)

票数 0
EN

Stack Overflow用户

发布于 2015-05-22 09:04:40

使用这个选项!

代码语言:javascript
复制
PHImageRequestOptions *options = [[PHImageRequestOptions alloc]init];
    options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
    options.networkAccessAllowed = YES;
票数 0
EN

Stack Overflow用户

发布于 2015-06-18 11:45:58

有一个解决方案,但只针对IOS 9,他们添加了一个新的结构。

代码语言:javascript
复制
typedef NS_OPTIONS(NSUInteger, PHAssetSourceType) {
 PHAssetSourceTypeNone            = 0,
 PHAssetSourceTypeUserLibrary     = (1UL << 0),
 PHAssetSourceTypeCloudShared     = (1UL << 1),
 PHAssetSourceTypeiTunesSynced    = (1UL << 2),
} NS_AVAILABLE_IOS(9_0);

也是

代码语言:javascript
复制
Added PHAssetResourceType [enum]
Added PHAssetResourceType.AdjustmentBasePhoto
Added PHAssetResourceType.AdjustmentData
Added PHAssetResourceType.AlternatePhoto
Added PHAssetResourceType.Audio
Added PHAssetResourceType.FullSizePhoto
Added PHAssetResourceType.FullSizeVideo
Added PHAssetResourceType.Photo
Added PHAssetResourceType.Video
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30367208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档