ios学习--照片框架详解之二 —— PhotoKit PHAsset应用


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;
                                      }
                                  }];
asset为assetsFetchResults中的一个PHAsset,targetSize是获取图片的大小,这个根据你显示的方式设置,如果需要获取图片其他信息比如标题可以采用
?
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.csdn.net/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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值