文档章节

ALAssetsLibrary-代码操作iOS相册资源

木木情深
 木木情深
发布于 2014/02/15 22:47
字数 421
阅读 135
收藏 0

在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的不同的表示方式,本质上都表示同一个资源文件)


本文转载自:http://blog.sina.com.cn/s/blog_7b9d64af0101cfdl.html

共有 人打赏支持
木木情深
粉丝 37
博文 189
码字总数 26451
作品 0
广州
程序员
私信 提问
在手机相册(ios设备相册)中创建相册

这篇博客的主要内容来源于cocoachina 里的贴子,代码能实现在在手机相册(ios设备相册)中创建相册的功能,下面我就原文整理,在扩展一下。 原文地址:http://www.cocoachina.com/bbs/read....

lady-奕奕
2014/05/23
0
4
如何把 GIF 动图保存到相册?

https://blog.csdn.net/u012681458/article/details/52883163 例子 iOS 8以后 iOS 8以前 如何把 GIF 动图保存到相册? iOS 的相册是支持保存 GIF 和 APNG 动图的,只是不能直接播放。用 [ALA...

壹峰
2018/10/31
0
0
iOS开发之AssetsLibrary框架使用

iOS开发之AssetsLibrary框架使用 一、引言 AssetsLibrary框架是专门用来操作相册相关资源的一个框架,其是iOS4到iOS9之间常使用的一个框架,在iOS9之后,系统系统了Photos框架代替了AssetsL...

珲少
2018/09/11
0
0
iOS的AssetsLibrary框架访问所有相片

由于博客迁移至www.coderyi.com,文章请看http://www.coderyi.com/archives/424 该框架下有几个类,ALAssetsLibrary,ALAssetsGroup,ALAsset,ALAssetsFilter,ALAssetRepresentation。 ALAs......

flyicarus
2014/10/16
0
1
Unity与IOS交互,调用IOS系统相机和相册

前面两篇总结了一下unity与android的简单交互和调用安卓系统相机和相册,比较蛋疼的是,后来发现不同的测试机上会有不同的bug。。。下阶段要一个一个的解决一下 今天总结一下与IOS的交互。这...

qq_32587659
2018/05/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
3
0
C++网络编程(一)gRPC的编译

Google是真滴烦,整个编译链全是自家产品,在编译之前先来安装一堆东西 安装环境依赖 chocolatey Windows下的包管理系统,没有他就慢慢去下载下面的一堆乱七八糟的东西吧。CMD下执行下面这句...

Pulsar-V
今天
3
0
Python3的日期和时间

python 中处理日期时间数据通常使用datetime和time库 因为这两个库中的一些功能有些重复,所以,首先我们来比较一下这两个库的区别,这可以帮助我们在适当的情况下时候合适的库。 在Python文...

编程老陆
今天
2
0
分布式面试整理

并发和并行 并行是两个任务同时进行,而并发呢,则是一会做一个任务一会又切换做另一个任务。 临界区 临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用,但是每一次,只能有...

群星纪元
今天
3
0
手机通过wifi遥控arduino

手机下载Blinker 从Blinker官网下载手机App,安装到手机。 手机连接WiFi。 点击我的设备右上角的"+"添加设备,选择Arduino -> wifi接入,复制密钥以备后续使用。 点击新建的设备,可以在新界...

davidwbnu
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部