1
2
3
4
5
6
|
typedef NS_ENUM(NSInteger, PHAssetMediaType) {
PHAssetMediaTypeUnknown =
0
,
PHAssetMediaTypeImage =
1
,
PHAssetMediaTypeVideo =
2
,
PHAssetMediaTypeAudio =
3
,
} NS_ENUM_AVAILABLE_IOS(8_0);
|
一、取只有照片类型的PHAsset
应该设置提取选项,其具有一个属性 predicate
,可用于筛选的视频。下面是一个例子做那件事。
PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
//set up fetch options, mediaType is image.
PHFetchOptions *options = [[PHFetchOptions alloc] init];
options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
options.predicate = [NSPredicate predicateWithFormat:@"mediaType = %d",PHAssetMediaTypeImage];
for (NSInteger i =0; i < smartAlbums.count; i++) {
PHAssetCollection *assetCollection = smartAlbums[i];
PHFetchResult *assetsFetchResult = [PHAsset fetchAssetsInAssetCollection:assetCollection options:options];
NSLog(@"sub album title is %@, count is %ld", assetCollection.localizedTitle, assetsFetchResult.count);
if (assetsFetchResult.count > 0) {
for (PHAsset *asset in assetsFetchResult) {
//you have got your image type asset.
}
}
}
二、something about获取设备本地音视频
1、检索音视频
1
2
3
4
5
6
7
8
|
PHFetchOptions *allPhotosOptions;
@property
(nonatomic, strong) PHFetchResult *assetsFetchResults;
if
(allPhotosOptions == nil) {
allPhotosOptions = [[PHFetchOptions alloc] init];
allPhotosOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@
"creationDate"
ascending:YES]];
}
self.assetsFetchResults = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:allPhotosOptions];
|
其中assetsFetchResults存储了所有的图片信息,PHAssetMediaTypeImage为搜索图片的类型,
2、获取图片UIImage
1
2
3
4
5
6
7
8
9
10
|
[[PHCachingImageManager defaultManager] requestImageForAsset:asset
targetSize:AssetGridThumbnailSize
contentMode:PHImageContentModeAspectFill
options:nil
resultHandler:^(UIImage *result, NSDictionary *info) {
// Set the cell's thumbnail image if it's still showing the same asset.
if
([cell.representedAssetIdentifier isEqualToString:asset.localIdentifier]) {
cell.thumbnailImage = result;
}
}];
|
1
|
[phAsset valueForKey:@
"filename"
];
|
3、播放视频
1
2
3
4
5
6
7
8
9
|
-(
void
)setVideoAsset:(PHAsset *)videoAsset
{
_videoAsset = videoAsset;
[[PHImageManager defaultManager] requestPlayerItemForVideo:_videoAsset options:nil resultHandler:^(AVPlayerItem * _Nullable playerItem, NSDictionary * _Nullable info) {
self.currentItem = playerItem;
[self.player replaceCurrentItemWithPlayerItem:self.currentItem];
[self.currentItem addObserver:self forKeyPath:@
"status"
options:NSKeyValueObservingOptionNew context:nil];
}];
}
|
三、
iOS8开发之 PHAsset 保存图片到相册(相机胶卷)
请查看以下链接:
http://blog.youkuaiyun.com/jeffasd/article/details/50498907
以及其上下博文
1
2
3
4
5
6
|
typedef NS_ENUM(NSInteger, PHAssetMediaType) {
PHAssetMediaTypeUnknown =
0
,
PHAssetMediaTypeImage =
1
,
PHAssetMediaTypeVideo =
2
,
PHAssetMediaTypeAudio =
3
,
} NS_ENUM_AVAILABLE_IOS(8_0);
|