iOS ALAssetsLibrary-代码操作iOS相册资源

在iOS中,我们调用摄像头和选择相册中的资源,我们可以使用: UIImagePickerController类来完成。

当然,我们也可以不使用UI的形式来访问iOS设备的相册资源。
那就是使用: ALAssetsLibrary

一、 ALAssetsLibrary是什么

可以说,是一个桥梁把。连接了我们应用程序和相册之间的访问。
ALAssetsLibrary提供了我们对iOS设备中的相片、视频的访问。

ALAssetsLibrary被封装在  框架中。所以,我们在使用时,需要引入该框架。

贴:

self.view.backgroundColor = [UIColor whiteColor];

    self.assetsLibrary = [[ALAssetsLibrary allocinit];

    dispatch_queue_t dispatchQueue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    dispatch_async(dispatchQueue, ^(void) {

        // 遍历所有相册

        [self.assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll

                                          usingBlock:^(ALAssetsGroup *group, BOOL*stop) {

                                              // 遍历每个相册中的项ALAsset

                                              [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index,BOOL *stop) {

                                                  

                                                  __block BOOL foundThePhoto =NO;

                                                  if (foundThePhoto){

                                                      *stop = YES;

                                                  }

                                                  // ALAsset的类型

                                                  NSString *assetType = [resultvalueForProperty:ALAssetPropertyType];

                                                  if ([assetTypeisEqualToString:ALAssetTypePhoto]){

                                                      foundThePhoto = YES;

                                                      *stop = YES;

                                                      ALAssetRepresentation*assetRepresentation =[result defaultRepresentation];

                                                      CGFloat imageScale = [assetRepresentation scale];

                                                      UIImageOrientationimageOrientation = (UIImageOrientation)[assetRepresentation orientation];

                                                     dispatch_async(dispatch_get_main_queue(), ^(void) {

                                                          CGImageRefimageReference = [assetRepresentation fullResolutionImage];

                                                          // 对找到的图片进行操作

                                                          UIImage *image =[[UIImage allocinitWithCGImage:imageReference scale:imageScaleorientation:imageOrientation];

                                                          if (image != nil){

                                                              self.imageView = [[UIImageView allocinitWithFrame:self.view.bounds];

                                                             self.imageView.contentMode = UIViewContentModeScaleAspectFit;

                                                             self.imageView.image = image;

                                                              [self.viewaddSubview:self.imageView];

                                                          } else {

                                                              NSLog(@"Failed to create the image.");

                                                          } });

                                                  }

                                              }];

                                          }

                                          failureBlock:^(NSError *error) {

                                              NSLog(@"Failed to enumerate the asset groups.");

                                          }];

        

    });



乱啊,没办法,在xCode中是OK的。

需要解释的几点:

1.流程:该代码的流程,就是先遍历所有相册,然后,遍历每个相册中的第一张图片。

2. ALAssetsGroup: 指代一个相册。

3. ALAsset每一个ALAsset代表一个单一资源文件(也就是一张图片,或者一个视频文件)

4. ALAssetRepresentationALAssetRepresentation封装了ALAsset,包含了一个资源文件中的很多属性。(可以说是ALAsset的不同的表示方式,本质上都表示同一个资源文件)

希望对你有所帮助!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值