您的位置:首页 > 移动开发 > IOS开发

iOS获取所有照片

2016-05-10 18:12 525 查看

最近的项目要求做一个照片浏览器,之前没做过,在做的过程中遇到的第一个紧要问题就是 “如何获取手机相册所有的照片”,在网上看了下资料,实现过程基本是这样的:

1.首先导入框架 ASSetsLibrary.framework

然后,#import <AssetsLibrary/AssetsLibrary.h>

2.获取所有照片

//获取所有的图片

- (void)getAllImage{

//获取失败

ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *myerror){

MCLog(@"相册访问失败 =%@",
[myerror localizedDescription]);

if ([myerror.localizedDescription
rangeOfString:@"Global denied access"].location!=NSNotFound)
{

MCLog(@"无法访问相册.请在'设置->定位服务'设置为打开状态.");

}else{

MCLog(@"相册访问失败.");

}

};

//获取到的图片

ALAssetsGroupEnumerationResultsBlock groupEnumerAtion = ^(ALAsset *result,
NSUInteger index,
BOOL *stop){

if (result!=NULL) {

if ([[result
valueForProperty:ALAssetPropertyType]
isEqualToString:ALAssetTypePhoto]) {

//图片的url

NSString *urlstr=[NSString
stringWithFormat:@"%@",result.defaultRepresentation.url];

//把获取到的照片地址存储到自己想要的数组中

[self.imageArr
addObject:urlstr];

}

[self.collectionView
reloadData];

}

};

ALAssetsLibraryGroupsEnumerationResultsBlock

libraryGroupsEnumeration = ^(ALAssetsGroup* group,
BOOL* stop){

if (group ==
nil){}

if (group!=nil) {

NSString *g=[NSString
stringWithFormat:@"%@",group];//获取相簿的组

MCLog(@"gg:%@",g);//gg:ALAssetsGroup - Name:Camera Roll,
Type:Saved Photos, Assets count:71

NSString *g1=[g
substringFromIndex:16 ] ;

NSArray *arr=[[NSArray
alloc] init];

arr=[g1 componentsSeparatedByString:@","];

NSString *g2=[[arr
objectAtIndex:0]
substringFromIndex:5];

if ([g2
isEqualToString:@"Camera Roll"]) {

g2=@"相机胶卷";

}

// NSString *groupName=g2;//组的name

[group enumerateAssetsUsingBlock:groupEnumerAtion];

}

};

ALAssetsLibrary* library = [[ALAssetsLibrary
alloc]
init];

[library enumerateGroupsWithTypes:ALAssetsGroupAll

usingBlock:libraryGroupsEnumeration

failureBlock:failureblock];

}

//获取图片

ALAssetsLibrary *assetLibrary=[[ALAssetsLibrary
alloc]
init];

//从之前的数组中拿出照片的url

NSString *urlStr =
self.imageArr[indexPath.item];

NSURL *url=[NSURL
URLWithString:urlStr];

[assetLibrary assetForURL:url
resultBlock:^(ALAsset *asset) {

//这里可以设置照片的模式,好像只有两个:缩略图、等比缩略图

UIImage *image=[UIImage
imageWithCGImage:asset.aspectRatioThumbnail];

cell.icon.image=image;

}failureBlock:^(NSError *error) {

NSLog(@"error=%@",error);

}

];

好了,大功告成,写的不好,希望各位多多指教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: