ALAssetsLibrary-代码操作iOS相册资源

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

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

那就是使用:ALAssetsLibrary

一、ALAssetsLibrary是什么

可以说,是一个桥梁把。连接了我们应用程序和相册之间的访问。

ALAssetsLibrary提供了我们对iOS设备中的相片、视频的访问。

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

贴:

self.view.backgroundColor = [UIColor whiteColor];

    self.assetsLibrary = [[ALAssetsLibrary alloc] init];

    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 = [result valueForProperty:ALAssetPropertyType];

                                                  if ([assetType isEqualToString:ALAssetTypePhoto]){

                                                      foundThePhoto = YES;

                                                      *stop = YES;

                                                      ALAssetRepresentation *assetRepresentation =[result defaultRepresentation];

                                                      CGFloat imageScale = [assetRepresentation scale];

                                                      UIImageOrientation imageOrientation = (UIImageOrientation)[assetRepresentation orientation];

                                                      dispatch_async(dispatch_get_main_queue(), ^(void)
{

                                                          CGImageRef imageReference = [assetRepresentation fullResolutionImage];

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

                                                          UIImage *image =[[UIImage alloc] initWithCGImage:imageReferencescale:imageScale orientation:imageOrientation];

                                                          if (image != nil){

                                                              self.imageView = [[UIImageView alloc] initWithFrame:self.view.bounds];

                                                              self.imageView.contentMode = UIViewContentModeScaleAspectFit;

                                                              self.imageView.image = image;

                                                              [self.view addSubview: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.ALAssetRepresentation:ALAssetRepresentation封装了ALAsset,包含了一个资源文件中的很多属性。(可以说是ALAsset的不同的表示方式,本质上都表示同一个资源文件)


时间: 2024-11-03 22:18:28

ALAssetsLibrary-代码操作iOS相册资源的相关文章

iOS开发资源汇总

如何用Facebook graphic api上传视频: http://developers.facebook.com/blog/post/532/ Keychain保存数据封装: https://github.com/carlbrown/PDKeychainBindingsController 对焦功能的实现: http://www.clingmarks.com/?p=612 自定义圆角Switch按件: https://github.com/domesticcatsoftware/DCRou

代码处理iOS的横竖屏旋转

本文讲的是代码处理iOS的横竖屏旋转,一.监听屏幕旋转方向 在处理iOS横竖屏时,经常会和UIDeviceOrientation.UIInterfaceOrientation和UIInterfaceOrientationMask这三个枚举类型打交道,它们从不同角度描述了屏幕旋转方向. 1.UIDeviceOrientation:设备方向 iOS的设备方向是通过iOS的加速计来获取的. 1)iOS定义了以下七种设备方向 typedef NS_ENUM(NSInteger, UIDeviceOrie

使用Swift代码实现iOS手势解锁、指纹解锁实例详解_IOS

一.手势密码 1. 1.1.用UIButton组成手势的节点. 1.2.当手指接触屏幕时,调用重写的 touchesBegan:withEvent方法(在touchesBegan里调用setNeedsDisplay,这样就会自动调用drawRect方法). 1.3.当手指在屏幕上滑动时,调用重写的touchesEnded:withEvent方法. 这两个方法执行的操作是一样的:通过locationInView获取 触摸的坐标,然后用 CGRectContainsPoint 判断手指是否经过UIB

xcode-大家好,我是ios开发的一个小白,问一下关于IOS相册选取图片后图片模糊的原因。

问题描述 大家好,我是ios开发的一个小白,问一下关于IOS相册选取图片后图片模糊的原因. #pragma mark - CGImagePickController NotificationCenter (void) CTAssetsPickCGImage:(NSNotification *)notice{NSArray *assetArr = [notice object];for (int x = 0; x < assetArr.count; x ++) { if (frameX <6)

不使用spring的情况下用java原生代码操作mongodb数据库的两种方式

由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常.   主要原因实际上是和mongodb本身无关的,因为他们改的是配置文件的密码,而实际上这个密码在代码中根本就没有使用,他们在代码中已经把用户验证信息写死.   在协助他们解决这个问题的时候,我看到他们代码中在和mongodb数据库交互时使用了已经不被建议使用的方法,于是便抽时间尝试了一下另一种被建议的方式实现各功能.   当然了,生产环境中用的是mongodb集群

ios-如何计算位于iOS相册中图片的正确md5值

问题描述 如何计算位于iOS相册中图片的正确md5值 具体情况 在OS X下,计算得的正确md5值是:63e3fbe6 a0438f26 e49e5dab 1c4af0d3. NSData *temp = [[NSData alloc] initWithContentsOfFile:@""/Users/apple/Pictures/temp/tu7.png""];NSLog(@""md5: %@"" [temp md5]);

求含有单元测试代码的ios版app

问题描述 求含有单元测试代码的ios版app 最近在学着写单元测试,终于摸到了xcTest的边,但是对于一个从来没有写过测试代码的人来说,突然写测试,有一种不知道如何下手的感觉 有人有iOS端的写了单元测试的项目吗,我想看看前辈们是怎么写测试的,好有个思路. 邮箱:huipaodetuzi@163.com 急,在线等.......

js-mydate97 日期控件的代码操作

问题描述 mydate97 日期控件的代码操作 mydate97 日期控件 分别只能选择每个月的第一天和最后一天 怎样实现?? 解决方案 http://blog.sina.com.cn/s/blog_6d0021460100m7ij.html mydate97 日期控件比较全的博客,自己找 或者直接上官网 别一遇到问题就上来问,记得先谷歌

界面-ios相册问题(在网上一直搜索不到)

问题描述 ios相册问题(在网上一直搜索不到) 在ios中,展示类似苹果手机相册的界面,按时间排序,分别有七天前,七天内,今天三种来展示手机照片,请问应该怎么做? 解决方案 提供一个个人思路: 整个界面用UITableView来做,自定义cell,cell中由一个长的button头,下面是一块View,View中创建多个button来放图片,点击图片时做个图片放大功能.基本上就差不多了.