美文网首页iOS图形处理相关获取系统相册-视频iOS Developer
iOS 获取系统相册内视频与图片(PhotoKit篇)

iOS 获取系统相册内视频与图片(PhotoKit篇)

作者: Snoopy008 | 来源:发表于2016-07-17 14:56 被阅读3764次

最近有点小忙,天天都在敲代码。学到了一大堆东西,后期我会和大家一起分享的。本期我主要是想将上期未完成的补全,所以本期整理的是PhotoKit的相关内容。

PhotoKit组成######
  • PHAsset: 代表照片库中的一个资源,跟 ALAsset 类似,通过 PHAsset 可以获取和保存资源
  • PHFetchOptions: 获取资源时的参数,可以传 nil,即使用系统默认值
  • PHFetchResult: 表示一系列的资源集合,也可以是相册的集合
  • PHAssetCollection: 表示一个相册或者一个时刻,或者是一个「智能相册(系统提供的特定的一系列相册,例如:最近删除,视频列表,收藏等等,如下图所示)
  • PHImageManager: 用于处理资源的加载,加载图片的过程带有缓存处理,可以通过传入一个 PHImageRequestOptions 控制资源的输出尺寸等规格
  • PHImageRequestOptions: 如上面所说,控制加载图片时的一系列参数
// 列出所有相册智能相册
PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
 
// 列出所有用户创建的相册
PHFetchResult *topLevelUserCollections = [PHCollectionList fetchTopLevelUserCollectionsWithOptions:nil];
 
// 获取所有资源的集合,并按资源的创建时间排序
PHFetchOptions *options = [[PHFetchOptions alloc] init];
options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
PHFetchResult *assetsFetchResults = [PHAsset fetchAssetsWithOptions:options];
 
// 在资源的集合中获取第一个集合,并获取其中的图片
PHCachingImageManager *imageManager = [[PHCachingImageManager alloc] init];
PHAsset *asset = assetsFetchResults[0];
[imageManager requestImageForAsset:asset
                         targetSize:SomeSize
                        contentMode:PHImageContentModeAspectFill
                            options:nil
                      resultHandler:^(UIImage *result, NSDictionary *info) {
                           
                          // 得到一张 UIImage,展示到界面上
                           
                      }];

具体信息详见http://kayosite.com/ios-development-and-detail-of-photo-framework.html
这里面写的很全。
下一期我将整理目前做项目遇到的问题分享给大家。

相关文章

网友评论

  • 白屏:遍历assetsFetchResults,获取所有图片,由于是异步获取的,怎么确定获取所有图片完毕的那个时刻?感觉如果再算上iCloud上的图片,那就更蛋疼了
  • manajay:你好 我做分片上次视频的功能 , 使用 photokit 想获取视频的路径 ,但是发现URL 没用 不能用 fileHandler 获取文件数据, 那么, 有什么方法 可以做到吗, 比如localIdentifier是会动态改变的吗
    Snoopy008:@manajay 本地保存路径这个你可以有多种方式,你可以保存在沙盒,或者偏好设置,或者数据库
    manajay:@Snoopy008 可以播放, 不过我想要 本地保存这种路径或者唯一标识localIdentifier, 下次重启应用的时候 继续根据这个路径或者唯一标识localIdentifier 重新获取大文件视频 继续上传
    Snoopy008:@Manajay 获取的路径看能不能播放
  • 冀F旭:链接失效了
    Snoopy008:@小魂淡不喜欢冬天 好的,谢谢
    af0810390095:@Snoopy008 连接不是失效了,是连接尾部怎么加了个句号的原因 , 去掉就好了
    Snoopy008:@冀F旭 的确,不过进入那个页面点回到首页还是能找到的
  • 林易析:很实用,多来点干货吧

本文标题:iOS 获取系统相册内视频与图片(PhotoKit篇)

本文链接:https://www.haomeiwen.com/subject/mizujttx.html