通过创建ALAssetsLibrary 的实例可以访问系统Photos里的图片与视频。这个库包括了保存的图片,从iTunes导入的和从其他设备里面导入的图片,你可以访问所有的分类和保存图片视频。

用普通的alloc和init就可以创建ALAssetsLibrary的实例,所有你从这个实例中获取得到的对象的生命周期和ALAssetsLibrary这个实例的生命周期一致。

大多数的函数,都是异步处理的,所有的成功失败的回调都是使用block传入的,因为有可能需要用户点击授权。在iOS4至iOS5的版本中,会提示要访问用户的地理位置。到iOS6会提示访问用户的照片信息,这一点需要注意。

可以遍历Group,创建Group,创建图片,添加信息等,可以进行大多数的访问与操作。

可以通过valueForProperty获取到图片的信息,包括类型, Location , 时长,方向,日期,格式 , URL地址。

NSString * nsALAssetPropertyType = [ asset valueForProperty:ALAssetPropertyType ] ;

NSString * nsALAssetPropertyLocation = [ asset valueForProperty:ALAssetPropertyLocation ] ;

NSString * nsALAssetPropertyDuration = [ asset valueForProperty:ALAssetPropertyDuration ] ;

NSString * nsALAssetPropertyOrientation = [ asset valueForProperty:ALAssetPropertyOrientation ] ;

NSString * nsALAssetPropertyDate = [ asset valueForProperty:ALAssetPropertyDate ] ;

NSString * nsALAssetPropertyRepresentations = [ asset valueForProperty:ALAssetPropertyRepresentations ] ;

NSString * nsALAssetPropertyURLs = [ asset valueForProperty:ALAssetPropertyURLs ] ;

NSString * nsALAssetPropertyAssetURL = [ asset valueForProperty:ALAssetPropertyAssetURL ] ;

获取全部图片的示例:

//View Controller header(.h) file..

#import <UIKit/UIKit.h>

#include<AssetsLibrary/AssetsLibrary.h>

@interface getPhotoLibViewController : UIViewController

{

ALAssetsLibrary *library;

NSArray *imageArray;

NSMutableArray *mutableArray;

}

-(void)allPhotosCollected:(NSArray*)imgArray;

@end

//implementation file

declare global count variable as

static int count=0;

@implementation getPhotoLibViewController

-(void)getAllPictures

{

imageArray=[[NSArray alloc] init];

mutableArray =[[NSMutableArray alloc]init];

NSMutableArray* assetURLDictionaries = [[NSMutableArray alloc] init];

library = [[ALAssetsLibrary alloc] init];

void (^assetEnumerator)( ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {

if(result != nil) {

if([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto]) {

[assetURLDictionaries addObject:[result valueForProperty:ALAssetPropertyURLs]];

NSURL *url= (NSURL*) [[result defaultRepresentation]url];

[library assetForURL:url

resultBlock:^(ALAsset *asset) {

[mutableArray addObject:[UIImage imageWithCGImage:[[asset defaultRepresentation] fullScreenImage]]];

if ([mutableArray count]==count)

{

imageArray=[[NSArray alloc] initWithArray:mutableArray];

[self allPhotosCollected:imageArray];

}

}

failureBlock:^(NSError *error){ NSLog(@"operation was not successfull!"); } ];

}

}

};

NSMutableArray *assetGroups = [[NSMutableArray alloc] init];

void (^ assetGroupEnumerator) ( ALAssetsGroup *, BOOL *)= ^(ALAssetsGroup *group, BOOL *stop) {

if(group != nil) {

[group enumerateAssetsUsingBlock:assetEnumerator];

[assetGroups addObject:group];

count=[group numberOfAssets];

}

};

assetGroups = [[NSMutableArray alloc] init];

[library enumerateGroupsWithTypes:ALAssetsGroupAll

usingBlock:assetGroupEnumerator

failureBlock:^(NSError *error) {NSLog(@"There is an error");}];

}

-(void)allPhotosCollected:(NSArray*)imgArray

{

//write your code here after getting all the photos from library...

NSLog(@"all pictures are %@",imgArray);

}

@end

Use getAllPicture method to get photos from photo library.

转载于:https://www.cnblogs.com/transcendent/p/4810182.html

ios中通过ALAssetsLibrary获取所有图片相关推荐

  1. mysql中获取时间的年月日_关于苹果ios中的Date()获取时间NaN的问题

    项目开发过程中难免会遇到倒计时,获取时间等类似的问题,然而ios端获取时间戳时发现,显示结果NaN(nont a number),安卓端显示是ok的. ***原因:Date()内时间格式问题*** i ...

  2. iOS中根据月和日获取星座名

    /*** 根据月和日的下标获取星座名(未添加日期判错处理)** @param monthIndex 月的下标[0-11]* @param dayIndex 日的下标[0-27,28,29,30]** ...

  3. IOS中获取各个文件的目录路径的方法和NSFileManager类

    转自:http://blog.sina.com.cn/s/blog_5fb39f910101di92.html IOS中获取各种文件的目录路径的方法 iphone沙箱模型的有四个文件夹,分别是什么,永 ...

  4. (iPhone)怎样从photo album中获取所有图片 “****TWO*****” ---》 获取所有图片从Photo Album?...

    ok 现在就简单一个方法就可以搞定 "获取所有图片从Photo Album"了.哈哈  代码如下: 使用它" ALAssetsLibrary" 就ok了. + ...

  5. php study计算闰年,IOS_IOS获取指定年月的当月天数,前言 在开发IOS中常常需要用 - phpStudy...

    IOS获取指定年月的当月天数 前言 在开发IOS中常常需要用到这一功能,在限定一个月的时间间隔为第一天和最后一天,需要知道这个月有多少天,才能知道最后一天是多少号,而且还要知道是否是闰年,可能2月只有 ...

  6. iOS - 中获取各种文件的目录路径的方法

    转自:https://www.cnblogs.com/zrr-notes/p/5953445.html 我们的app在手机中存放的路径是:/var/mobile/Applications/4434-4 ...

  7. iOS中使用c函数快速获取一个目录所占的空间大小

    在编写iOS应用时,我们都会大量把服务器的接口调用数据或者图片数据进行缓存,为了更好的使用体验,有时候我们也会把各种缓存的数据所占的空间大小告诉用户,提供给用户参考,并让用户可以手动清除缓存数据,就像 ...

  8. APP推送中首次获取 ios clientid的值获取不到。

    在APP做推送中Android和ios在获取时用到clientid(cid),Android的会在第一次登陆时就能获取到,但是在ios中会在第二次登陆中才能获取到. 经过多次的实验有一种方法能快速获取 ...

  9. js获取时间戳,IOS中不兼容

    在IOS中要这样写new Date("2016/05/19 08:00"),该写法在安卓中也是支持的.另外,安卓中也可以这样写new Date("2016-05-19 0 ...

最新文章

  1. 整合Web应用与Axis2
  2. Containers vs Serverless:怎么选择?
  3. poj1743(后缀数组:最长不可重叠子串长度)
  4. vue深究第一弹:computed与watch的异同
  5. 计算机网络的组成和结构ppt,常见的计算机网络拓扑结构PPT课件.pptx
  6. 1.c++中初始化列表和构造函数初始化的区别是什么?2.类的成员变量的初始化顺序是按照声明顺序吗?
  7. python开发自己的工具包_爬虫开发python工具包介绍 (4)
  8. linux文件描述符导致squid拒绝服务
  9. opencv项目6----AI绘画(隔空绘画)
  10. 承认你的父母其实不那么爱你
  11. NYOJ-108-士兵杀敌(一)
  12. “异军突起”的蔷薇灵动或成云安全领域“独角兽”?
  13. 投资组合计算器(1)
  14. c# 数字转换为中文数字
  15. 16.[STM32]从原理开始带你了解DS18B20温度传感器-四位数码管显示温度
  16. ART-PI调试记录----重力感应无线智能小车第二弹之OneNet+板载wifi控制电机转动
  17. 如何写CV和Cover Letter
  18. 淘宝开放平台架构整理资料
  19. Linux应用开发【第二章】图像处理应用开发
  20. ID Tech 5 中quot;Megatexturequot;针对地形的D3D9 基本实现原理

热门文章

  1. 【jquery】select下拉框赋值
  2. 【SpringBoot】 启动时,修改默认配置文件名称
  3. 达不达标的公式计算机,“我面试了几十个大学生都不达标,连这3个Excel公式都看不懂”...
  4. a commit git 参数是什么意思_深入理解Git - 一切皆commit
  5. php微信支付分取消订单,微信支付PHP开发教程五关闭订单
  6. 如何使用Webpack
  7. mysql hex函数性能_mysql hex与unhex 函数的妙用
  8. Elasticsearch原理与调优
  9. 从零开始学习docker(十三)Docker Compose--scale
  10. 赞!用Python获取A股行情数据的4种方法