Photos框架功能十分强大,不止保存功能 下面详解Photos这个iOS8.0才出现的新框架: 对 PhotoKit 基本构成的介绍:(本文采取最新的swift版本,OC得慢慢过渡到swift了) PHAsset : 代表照片库中的一个资源,跟 ALAsset 类似,通过 PHAsset 可以获取和保存资源 PHFetchOptions: 获取资源时的参数,可以传 nil,即使用系统默认值 PHAssetCollection ) let assetsFetchResults:PHFetchResult = PHAsset.fetchAssets(in: assetCollection, options ) let assetsFetchResults:PHFetchResult = PHAsset.fetchAssets(in: assetCollection as! <assetFetchResults.count { //获取一个资源(PHAsset) let asset = assetFetchResults[i]
NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]]; } self.assetsFetchResults = [PHAsset isEqualToString:asset.localIdentifier]) { cell.thumbnailImage = result; } }]; asset为assetsFetchResults中的一个PHAsset ,targetSize是获取图片的大小,这个依据你显示的方式设置,假设须要获取图片其它信息比方标题能够採用 [phAsset valueForKey:@"filename"]; 3、播放视频 -(void )setVideoAsset:(PHAsset *)videoAsset { _videoAsset = videoAsset; [[PHImageManager defaultManager
,与ALAsset类似,通过PHAsset可以获取和保存资源; 2.PHFetchOptions:获取资源时的参数; 3.PHAssetCollection:PHCollection的子类,表示一个相册或者一个时刻 系统提供的一系列相册集合,包括最近删除、相机相册、最爱相册等等)中的一个; 4.PHFetchResult:表示一系列资源结果的集合,也可以是相册资源集合,一般情况下,可以从PHCollection或PHAsset NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]]; PHFetchResult *allphotos = [PHAsset 的集合 PHFetchResult *photoSet = [PHAsset fetchAssetsInAssetCollection:assetCollection options:nil]; for (NSInteger j = 0; j < photoSet.count; i ++) { //获取其中一个资源 PHAsset *asset = photoSet
2 PhotoKit组成介绍 PHAsset: 代表照片库中的一个资源,跟 ALAsset 类似,通过 PHAsset 可以获取和保存资源 PHFetchOptions: 获取资源时的参数,可以传 nil NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]]; PHFetchResult *assetsFetchResults = [PHAsset 在资源的集合中获取第一个集合,并获取其中的图片 PHCachingImageManager *imageManager = [[PHCachingImageManager alloc] init]; PHAsset 同时通过 PHAsset,开发者还能直接获取资源是否被收藏(favorite)和隐藏(hidden),拍摄图片时是否开启了 HDR 或全景模式,甚至能通过一张连拍图片获取到连拍图片中的其他图片。
自定义相册方式之二Photos.framework 基本介绍:Photos是苹果在iOS8.0提出的API,是目前,苹果推荐的照片框架,学习一下还是很有必要的; 主要成员介绍: 1.PHAsset: 代表照片库中的一个资源,与ALAsset类似,通过PHAsset可以获取和保存资源; 2.PHFetchOptions:获取资源时的参数; 3.PHAssetCollection:PHCollection 系统提供的一系列相册集合,包括最近删除、相机相册、最爱相册等等)中的一个; 4.PHFetchResult:表示一系列资源结果的集合,也可以是相册资源集合,一般情况下,可以从PHCollection或PHAsset 的集合 PHFetchResult *photoSet = [PHAsset fetchAssetsInAssetCollection:assetCollection options:nil ]; for (NSInteger j = 0; j < photoSet.count; i ++) { //获取其中一个资源 PHAsset *asset
2 PhotoKit组成介绍 PHAsset: 代表照片库中的一个资源,跟 ALAsset 类似,通过 PHAsset 可以获取和保存资源 PHFetchOptions: 获取资源时的参数,可以传 nil NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]]; PHFetchResult *assetsFetchResults = [PHAsset 在资源的集合中获取第一个集合,并获取其中的图片 PHCachingImageManager *imageManager = [[PHCachingImageManager alloc] init]; PHAsset 同时通过 PHAsset,开发者还能直接获取资源是否被收藏(favorite)和隐藏(hidden),拍摄图片时是否开启了 HDR 或全景模式,甚至能通过一张连拍图片获取到连拍图片中的其他图片。
第二步:认识 PhotoKit 对象 可能刚开始的时候,大家也都跟我一样常常分不清楚 PHAsset,PHFetchOptions,PHAssetCollection,PHFetchResult,PHImageManager PHAsset:照片库中图像,视频或 live 照片。 PHFetchOptions:一组选项控制选项包括过滤,排序和管理,用于影响在获取PHAsset或collection对象时照片返回的结果。 PHFetchResult:表示一系列的资源结果集合,也可以是相册的集合,从 PHCollection 的类方法中获得; PHImageManager:提供用于检索或生成与PHAsset相关联的图像或视频数据的方法 PHCachingImageManager:PHImageManager的子类,为了处理大量的PHAsset数据时提升性能,如果要使用照片或视频资源的缩略图填充UICollectionViewController livephoto - (PHImageRequestID)requestLivePhotoForAsset:(PHAsset *)asset targetSize:(CGSize)targetSize
代码: // 获取要保存的图片 - (PHFetchResult<PHAsset *> *)createAsset{ NSError * error = nil; __block NSString placeholderForCreatedAsset.localIdentifier; } error:&error]; if (error) return nil; return [PHAsset
[self saveImage]; } }]; } } /** 保存图片到相册 */ - (void)saveImage { // PHAsset : 一个资源, 比如一张图片\一段视频 // PHAssetCollection : 一个相簿 // PHAsset的标识, 利用这个标识可以找到对应的PHAsset对象(图片对象) performChanges:^{ // 3.添加"相机胶卷"中的图片A到"相簿"D中 // 获得图片 PHAsset *asset = [PHAsset fetchAssetsWithLocalIdentifiers:@[assetLocalIdentifier] options:nil].lastObject;
然而可能是由于iOS 8推出匆忙,在iOS 8.0.x系统上,PHAsset的fetchAssetsWithMediaType: 和 fetchAssetsWithOptions:方法会返回iTunes 5.正确获取缩略图 - (PHImageRequestID)requestImageForAsset:(PHAsset *)asset targetSize:(CGSize)targetSize contentMode issue-21-4/ http://stackoverflow.com/questions/25883005/avoiding-duplicates-when-getting-pictures-with-phasset
文章详细介绍了PHAsset和PHAssetResource的作用,以及 PhotosKit 如何管理照片的多个版本和辅助数据(如 Apple/ISO Gain Map、Segmentation Matte