天天看点

iOS中读取照片库

iOS中如果我们只有一次读取一张图片或者一个视频(或拍一张照片/视频)的需求,那么我们用 UIImagePickerController 就可以搞定。但是很多时候我们需要一次性从PhotoLibrary读取多个照片或者视频,这时候我们就需要另辟蹊径了,好在apple为我们提供了相应的接口。

在开始coding之前我们想要认识几个类:

ALAssetsLibrary:代表整个PhotoLibrary,我们可以生成一个它的实例对象,这个实例对象就相当于是照片库的句柄。

ALAssetsGroup:照片库的分组,我们可以通过ALAssetsLibrary的实例获取所有的分组的句柄。

ALAsset:一个ALAsset的实例代表一个资产,也就是一个photo或者video,我们可以通过他的实例获取对应的subnail或者原图等等。

还需要了解的一个东东就是blocks,apple在iOS 4.0以后大量出现了这玩意儿,有使用越来越广的意思,不过这玩意儿确实好用。关于这玩意儿的内容我在这里不多讲,关注我的博客我会细讲。

1. ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc]init];//生成整个photolibrary句柄的实例
2. NSMutableArray *mediaArray = [[NSMutableArray alloc]init];//存放media的数组
3. //获取所有group
4. //从group里面
5. NSString* assetType = [result valueForProperty:ALAssetPropertyType];
6. if
7. "Photo");
8. elseif([assetType isEqualToString:ALAssetTypeVideo]){
9. "Video");
10. elseif([assetType isEqualToString:ALAssetTypeUnknown]){
11. "Unknow AssetType");
12. }
13. 
14. NSDictionary *assetUrls = [result valueForProperty:ALAssetPropertyURLs];
15. 0;
16. for
17. "Asset URL %lu = %@",(unsignedlong)assetCounter,[assetUrls objectForKey:assetURLKey]);
18. }
19. 
20. "Representation Size = %lld",[[result defaultRepresentation]size]);
21. }];
22. } failureBlock:^(NSError *error) {
23. "Enumerate the asset groups failed.");
24. }];