iOS 获取本地相册的所有图片

2 篇文章 0 订阅

#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 );
            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
                        [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];
        }
       
    });
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值