#import <AssetsLibrary/AssetsLibrary.h>
#pragma mark -
获取本地所有图片
//url 装 image
- ( void )getImage:( NSString *)urlStr
{
ALAssetsLibrary *assetLibrary=[[ ALAssetsLibrary alloc ] init ];
NSURL *url=[ NSURL URLWithString :urlStr];
[assetLibrary assetForURL :url resultBlock :^( ALAsset *asset) {
ALAssetRepresentation *rap = [asset defaultRepresentation ];
CGImageRef ref = [rap fullScreenImage ];
// 大图
UIImage *image=[ UIImage imageWithCGImage :ref];
// 缩略图
// UIImage *image=[UIImage imageWithCGImage:asset.thumbnail];
if ([asset valueForProperty : ALAssetTypePhoto ]) {
dispatch_queue_t globalQueue = dispatch_get_global_queue ( DISPATCH_QUEUE_PRIORITY_DEFAULT , 0 );
//url 装 image
- ( void )getImage:( NSString *)urlStr
{
ALAssetsLibrary *assetLibrary=[[ ALAssetsLibrary alloc ] init ];
NSURL *url=[ NSURL URLWithString :urlStr];
[assetLibrary assetForURL :url resultBlock :^( ALAsset *asset) {
ALAssetRepresentation *rap = [asset defaultRepresentation ];
CGImageRef ref = [rap fullScreenImage ];
// 大图
UIImage *image=[ UIImage imageWithCGImage :ref];
// 缩略图
// UIImage *image=[UIImage imageWithCGImage:asset.thumbnail];
if ([asset valueForProperty : ALAssetTypePhoto ]) {
dispatch_queue_t globalQueue = dispatch_get_global_queue ( DISPATCH_QUEUE_PRIORITY_DEFAULT , 0 );
dispatch_async(globalQueue, ^{
//将取得的image保存到数据源 用于后续赋值
[
self
.
dataSource
addObject
:image];
});
}
});
}
//
刷新
dispatch_queue_t
mainQueue =
dispatch_get_main_queue
();
dispatch_async (mainQueue, ^{
[ self . collectionView reloadData ];
});
} failureBlock :^( NSError *error) {
NSLog ( @"error=%@" ,error);
}];
}
// 获取相册的所有图片
- ( void )reloadImagesFromLibrary
{
NSMutableArray *images = [[ NSMutableArray alloc ] init ];
dispatch_async ( dispatch_get_main_queue (), ^{
@autoreleasepool {
ALAssetsLibraryAccessFailureBlock failureblock = ^( NSError *myerror){
NSLog ( @" 相册访问失败 =%@" , [myerror localizedDescription ]);
if ([myerror. localizedDescription rangeOfString : @"Global denied access" ]. location != NSNotFound ) {
NSLog ( @" 无法访问相册 . 请在 ' 设置 -> 定位服务 ' 设置为打开状态 ." );
} else {
NSLog ( @" 相册访问失败 ." );
}
};
ALAssetsGroupEnumerationResultsBlock groupEnumerAtion = ^( ALAsset *result, NSUInteger index, BOOL *stop){
if (result!= NULL ) {
if ([[result valueForProperty : ALAssetPropertyType ] isEqualToString : ALAssetTypePhoto ]) {
NSString *urlstr=[ NSString stringWithFormat : @"%@" ,result. defaultRepresentation . url ]; // 图片的 url
dispatch_async (mainQueue, ^{
[ self . collectionView reloadData ];
});
} failureBlock :^( NSError *error) {
NSLog ( @"error=%@" ,error);
}];
}
// 获取相册的所有图片
- ( void )reloadImagesFromLibrary
{
NSMutableArray *images = [[ NSMutableArray alloc ] init ];
dispatch_async ( dispatch_get_main_queue (), ^{
@autoreleasepool {
ALAssetsLibraryAccessFailureBlock failureblock = ^( NSError *myerror){
NSLog ( @" 相册访问失败 =%@" , [myerror localizedDescription ]);
if ([myerror. localizedDescription rangeOfString : @"Global denied access" ]. location != NSNotFound ) {
NSLog ( @" 无法访问相册 . 请在 ' 设置 -> 定位服务 ' 设置为打开状态 ." );
} else {
NSLog ( @" 相册访问失败 ." );
}
};
ALAssetsGroupEnumerationResultsBlock groupEnumerAtion = ^( ALAsset *result, NSUInteger index, BOOL *stop){
if (result!= NULL ) {
if ([[result valueForProperty : ALAssetPropertyType ] isEqualToString : ALAssetTypePhoto ]) {
NSString *urlstr=[ NSString stringWithFormat : @"%@" ,result. defaultRepresentation . url ]; // 图片的 url
[imagesaddObject:urlstr];
//有一张图片自动执行一次
[
self
getImage
:urlstr];
}
}
};
ALAssetsLibraryGroupsEnumerationResultsBlock libraryGroupsEnumeration = ^( ALAssetsGroup * group, BOOL * stop){
if (group == nil )
{
}
if (group!= nil ) {
NSString *g=[ NSString stringWithFormat : @"%@" ,group]; // 获取相簿的组
NSLog ( @"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];
}
});
}
}
};
ALAssetsLibraryGroupsEnumerationResultsBlock libraryGroupsEnumeration = ^( ALAssetsGroup * group, BOOL * stop){
if (group == nil )
{
}
if (group!= nil ) {
NSString *g=[ NSString stringWithFormat : @"%@" ,group]; // 获取相簿的组
NSLog ( @"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];
}
});
}