iOS相册(多张图片选取)
(一)iOS4.0后9.0之前:AssetsLibrary.framework
该框架下有几个类,ALAssetsLibrary,ALAssetsGroup,ALAsset,ALAssetsFilter,ALAssetRepresentation。 (1) ALAssetsLibrary类: ALAssetsLibrary类可以实现查看相册列表,增加相册,保存图片到相册等功能。 例如enumerateGroupsWithTypes方法列举所有相册。 (2) ALAssetsGroup *ALAssetsGroup就是相册的类,可以通过valueForProperty方法查看不同属性的值,如:ALAssetsGroupPropertyName,相册名。 *ALAssetsGroup类有几个方法,posterImage方法就是相册的封面图片,numberOfAssets方法获取该相册的图片视频数量,可以通过enumerateAssetsUsingBlock方法列举出所有照片。 *ALAssetsGroup 可以使用setAssetsFilter:(ALAssetsFilter *)filter过滤照片或者视频等。 首先是获取所有相册,通过ALAssetsLibrary的实例方法得到ALAssetsGroup类数组。
ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init]; NSMutableArray *groupArray = [NSMutableArray array]; [assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) { if (group) { [groupArray addObject:group]; //通过这个可以知道相册的名字,从而也可以知道安装的部分应用 NSLog(@"%@",group); } } failureBlock:^(NSError *error) { NSLog(@"Group not found!\n"); }];
(3) ALAsset
*ALAsset类也可以通过valueForProperty方法查看不同属性的值,如:ALAssetPropertyType,asset的类型,有三种ALAssetTypePhoto, ALAssetTypeVideo or ALAssetTypeUnknown。 *另外还可以通过该方法获取ALAssetPropertyLocation(照片位置),ALAssetPropertyDuration(视频时间),ALAssetPropertyDate(照片拍摄日期)等。 可以通过thumbnail方法就是获取该照片。 *根据相册获取该相册下所有图片,通过ALAssetsGroup的实例方法得到ALAsset类数组。
[_group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) { if (result) { [imageArray addObject:result]; NSLog(@"%@",result); iv.image=[UIImage imageWithCGImage: result.thumbnail]; NSString *type=[result valueForProperty:ALAssetPropertyType]; } }];
(4) ALAssetsFilter:提供过滤照片或者视频的实例等。 (5) ALAssetRepresentation ALAsset类有一个defaultRepresentation方法,返回值是ALAssetRepresentation类,该类的作用就是获取该资源图片的详细资源信息。
// //获取资源图片的详细资源信息 ALAssetRepresentation* representation = [asset defaultRepresentation]; //获取资源图片的长宽 CGSize dimension = [representation dimensions]; //获取资源图片的高清图 [representation fullResolutionImage]; //获取资源图片的全屏图 [representation fullScreenImage]; //获取资源图片的名字 NSString* filename = [representation filename]; NSLog(@"filename:%@",filename); //缩放倍数 [representation scale]; //图片资源容量大小 [representation size]; //图片资源原数据 [representation metadata]; //旋转方向 [representation orientation]; //资源图片url地址,该地址和ALAsset通过ALAssetPropertyAssetURL获取的url地址是一样的 NSURL* url = [representation url]; NSLog(@"url:%@",url); //资源图片uti,唯一标示符 NSLog(@"uti:%@",[representation UTI]);
(二)iOS9之后:Photos.framework
//xxxx