#import <AssetsLibrary/AssetsLibrary.h>
#pragma mark -获取本地所有图片
//url装image
- (void)getImage:(NSString*)urlStr
{
ALAssetsLibrary *assetLibrary=[[ALAssetsLibraryalloc]init];
NSURL *url=[NSURLURLWithString:urlStr];
[assetLibrary assetForURL:urlresultBlock:^(ALAsset*asset) {
ALAssetRepresentation *rap = [asset defaultRepresentation];
CGImageRef ref = [rap fullScreenImage];
//大图
UIImage *image=[UIImageimageWithCGImage:ref];
//缩略图
// UIImage *image=[UIImage imageWithCGImage:asset.thumbnail];
if ([assetvalueForProperty:ALAssetTypePhoto]) {
dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
//url装image
- (void)getImage:(NSString*)urlStr
{
ALAssetsLibrary *assetLibrary=[[ALAssetsLibraryalloc]init];
NSURL *url=[NSURLURLWithString:urlStr];
[assetLibrary assetForURL:urlresultBlock:^(ALAsset*asset) {
ALAssetRepresentation *rap = [asset defaultRepresentation];
CGImageRef ref = [rap fullScreenImage];
//大图
UIImage *image=[UIImageimageWithCGImage:ref];
//缩略图
// UIImage *image=[UIImage imageWithCGImage:asset.thumbnail];
if ([assetvalueForProperty:ALAssetTypePhoto]) {
dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
dispatch_async(globalQueue, ^{
//将取得的image保存到数据源 用于后续赋值
[self.dataSourceaddObject:image];
});
}
});
}
//刷新
dispatch_queue_t
mainQueue =
dispatch_get_main_queue();
dispatch_async(mainQueue, ^{
[self.collectionViewreloadData];
});
}failureBlock:^(NSError*error) {
NSLog(@"error=%@",error);
}];
}
//获取相册的所有图片
- (void)reloadImagesFromLibrary
{
NSMutableArray *images = [[NSMutableArrayalloc]init];
dispatch_async(dispatch_get_main_queue(), ^{
@autoreleasepool {
ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError*myerror){
NSLog(@"相册访问失败=%@", [myerrorlocalizedDescription]);
if ([myerror.localizedDescriptionrangeOfString:@"Global denied access"].location!=NSNotFound) {
NSLog(@"无法访问相册.请在'设置->定位服务'设置为打开状态.");
}else{
NSLog(@"相册访问失败.");
}
};
ALAssetsGroupEnumerationResultsBlock groupEnumerAtion = ^(ALAsset*result,NSUInteger index, BOOL *stop){
if (result!=NULL) {
if ([[resultvalueForProperty:ALAssetPropertyType]isEqualToString:ALAssetTypePhoto]) {
NSString *urlstr=[NSStringstringWithFormat:@"%@",result.defaultRepresentation.url];//图片的url
dispatch_async(mainQueue, ^{
[self.collectionViewreloadData];
});
}failureBlock:^(NSError*error) {
NSLog(@"error=%@",error);
}];
}
//获取相册的所有图片
- (void)reloadImagesFromLibrary
{
NSMutableArray *images = [[NSMutableArrayalloc]init];
dispatch_async(dispatch_get_main_queue(), ^{
@autoreleasepool {
ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError*myerror){
NSLog(@"相册访问失败=%@", [myerrorlocalizedDescription]);
if ([myerror.localizedDescriptionrangeOfString:@"Global denied access"].location!=NSNotFound) {
NSLog(@"无法访问相册.请在'设置->定位服务'设置为打开状态.");
}else{
NSLog(@"相册访问失败.");
}
};
ALAssetsGroupEnumerationResultsBlock groupEnumerAtion = ^(ALAsset*result,NSUInteger index, BOOL *stop){
if (result!=NULL) {
if ([[resultvalueForProperty:ALAssetPropertyType]isEqualToString:ALAssetTypePhoto]) {
NSString *urlstr=[NSStringstringWithFormat:@"%@",result.defaultRepresentation.url];//图片的url
[imagesaddObject:urlstr];
//有一张图片自动执行一次
[selfgetImage:urlstr];
}
}
};
ALAssetsLibraryGroupsEnumerationResultsBlock libraryGroupsEnumeration = ^(ALAssetsGroup* group,BOOL* stop){
if (group ==nil)
{
}
if (group!=nil) {
NSString *g=[NSStringstringWithFormat:@"%@",group];//获取相簿的组
NSLog(@"gg:%@",g);//gg:ALAssetsGroup - Name:Camera Roll, Type:Saved Photos, Assets count:71
NSString *g1=[g substringFromIndex:16] ;
NSArray *arr=[[NSArrayalloc]init];
arr=[g1 componentsSeparatedByString:@","];
NSString *g2=[[arr objectAtIndex:0]substringFromIndex:5];
if ([g2isEqualToString:@"Camera Roll"]) {
g2=@"相机胶卷";
}
// NSString *groupName=g2;//组的name
[group enumerateAssetsUsingBlock:groupEnumerAtion];
}
};
ALAssetsLibrary* library = [[ALAssetsLibraryalloc]init];
[library enumerateGroupsWithTypes:ALAssetsGroupAll
usingBlock:libraryGroupsEnumeration
failureBlock:failureblock];
}
});
}
}
};
ALAssetsLibraryGroupsEnumerationResultsBlock libraryGroupsEnumeration = ^(ALAssetsGroup* group,BOOL* stop){
if (group ==nil)
{
}
if (group!=nil) {
NSString *g=[NSStringstringWithFormat:@"%@",group];//获取相簿的组
NSLog(@"gg:%@",g);//gg:ALAssetsGroup - Name:Camera Roll, Type:Saved Photos, Assets count:71
NSString *g1=[g substringFromIndex:16] ;
NSArray *arr=[[NSArrayalloc]init];
arr=[g1 componentsSeparatedByString:@","];
NSString *g2=[[arr objectAtIndex:0]substringFromIndex:5];
if ([g2isEqualToString:@"Camera Roll"]) {
g2=@"相机胶卷";
}
// NSString *groupName=g2;//组的name
[group enumerateAssetsUsingBlock:groupEnumerAtion];
}
};
ALAssetsLibrary* library = [[ALAssetsLibraryalloc]init];
[library enumerateGroupsWithTypes:ALAssetsGroupAll
usingBlock:libraryGroupsEnumeration
failureBlock:failureblock];
}
});
}

本文介绍了一种使用 iOS 的 Assets Library 框架来获取并显示设备上所有照片的方法。通过列举相册中的图片资源,并将图片加载到内存中进行展示。
5474

被折叠的 条评论
为什么被折叠?



