iOS的AssetsLibrary框架解读与应用 (转发)

https://github.com/gang544043963/LGPhotoBrowser


iOS提供的AssetsLibrary框架是用来读取和操作本地相册的,连接了我们应用程序和相册之间的访问, 该框架提供一下6个类:ALAssetsLibrary,AssetsLibrary,ALAssetsGroup,ALAsset,ALAssetsFilter,ALAssetRepresentation。

ALAssetsLibrary

ALAssetsLibrary类可以实现查看相册列表,增加相册,保存图片到相册等功能。

常用的几个方法:

1. 获得相册的组别(Get the list of groups that match the given types)

[objc]view plaincopy

- (void)enumerateGroupsWithTypes:(ALAssetsGroupType)typesusingBlock:(ALAssetsLibraryGroupsEnumerationResultsBlock)enumerationBlockfailureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock;

在这个方法的enumerationBlock中读取分组列表,包括它的名称、封面图片等等。

2. 返回一个ALAsset对象(Returns an ALAsset object in the result block for a URL previously retrieved from an ALAsset object)

[objc]view plaincopy

- (void)assetForURL:(NSURL*)assetURLresultBlock:(ALAssetsLibraryAssetForURLResultBlock)resultBlockfailureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock;

3. 和上面类似,返回一个ALAssetsGroup对象

[objc]view plaincopy

- (void)groupForURL:(NSURL*)groupURLresultBlock:(ALAssetsLibraryGroupResultBlock)resultBlockfailureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock

AssetsLibrary

没提供什么方法,就是一个包含其他五个类的一个头文件

ALAssetsGroup

ALAssetsGroup就是相册组的类,可以通过这个类提供的方法来获取相册组的各种信息。

1. 获得 名称,类型,ID,NSURL

- (id)valueForProperty:(NSString *)property;

property可以是:

ALAssetsGroupPropertyName(名称)

ALAssetsGroupPropertyType(类型)

ALAssetsGroupPropertyPersistentID(ID)

ALAssetsGroupPropertyURL (NSURL)

2. 获得相册分组的封面图片

- (CGImageRef)posterImage;

注意使用:

[objc]view plaincopy

//获取相册group的封面

cell.imageView.image= [UIImageimageWithCGImage:[groupposterImage]];

3. 过滤器

- (void)setAssetsFilter:(ALAssetsFilter *)filter

ALAssetsFilter中有这些方法,是过滤类型

[objc]view plaincopy

// Get all photos assets in the assets group.

+ (ALAssetsFilter*)allPhotos;

// Get all video assets in the assets group.

+ (ALAssetsFilter*)allVideos;

// Get all assets in the group.

+ (ALAssetsFilter*)allAssets;

4. 获得相册的组的数量

[objc]view plaincopy

- (NSInteger)numberOfAssets;

5. 通过相册组获取里面的图片:

[objc]view plaincopy

- (void)enumerateAssetsUsingBlock:(ALAssetsGroupEnumerationResultsBlock)enumerationBlock;

- (void)enumerateAssetsWithOptions:(NSEnumerationOptions)optionsusingBlock:(ALAssetsGroupEnumerationResultsBlock)enumerationBlock;

- (void)enumerateAssetsAtIndexes:(NSIndexSet*)indexSetoptions:(NSEnumerationOptions)optionsusingBlock:(ALAssetsGroupEnumerationResultsBlock)enumerationBlock;

一般使用第一个。

6. 增加图片

[objc]view plaincopy

- (BOOL)addAsset:(ALAsset*)asset

ALAssetsFilter

上面说过了,提供了三种过滤方法:

[objc]view plaincopy

// Get all photos assets in the assets group.

+ (ALAssetsFilter*)allPhotos;

// Get all video assets in the assets group.

+ (ALAssetsFilter*)allVideos;

// Get all assets in the group.

+ (ALAssetsFilter*)allAssets;

ALAssetRepresentation

ALAssetRepresentation对象封装了一个给定ALAsset对象的陈述

直接上代码说明问题。参考点击打开链接

[objc]view plaincopy

//获取资源图片的详细资源信息

ALAssetRepresentation* representation = [assetdefaultRepresentation];

//获取资源图片的长宽

CGSize dimension = [representationdimensions];

//获取资源图片的高清图

[representationfullResolutionImage];

//获取资源图片的全屏图

[representationfullScreenImage];

//获取资源图片的名字

NSString* filename = [representationfilename];

NSLog(@"filename:%@",filename);

//缩放倍数

[representationscale];

//图片资源容量大小

[representationsize];

//图片资源原数据

[representationmetadata];

//旋转方向

[representationorientation];

//资源图片url地址,该地址和ALAsset通过ALAssetPropertyAssetURL获取的url地址是一样的

NSURL* url = [representationurl];

NSLog(@"url:%@",url);

//资源图片uti,唯一标示符

NSLog(@"uti:%@",[representationUTI]);

ALAsset

照片类,这里要说的就是

[objc]view plaincopy

- (id)valueForProperty:(NSString*)property;

property有如下类型:

1.ALAssetPropertyType资源的类型(照片,视频)

2.ALAssetPropertyLocation资源地理位置(无位置信息返回null)

3.ALAssetPropertyDuation播放时长(照片返回ALErorInvalidProperty)

4.ALAssetPropertyOrientation方向(共有8个方向,参见:ALAssetOrientation)

5.ALAssetPropertyDate 拍摄时间(包含了年与日时分秒)

6.ALAssetPropertyRepresentations描述(打印看了下,只有带后缀的名称)

7.ALAssetPropertyURLs(返回一个字典,键值分别是文件名和文件的url)

8.ALAssetPropertyAssetURL文件的url

得到缩略图

[objc]view plaincopy

- (CGImageRef)thumbnail;

以上是AssetsLibrary框架中所有类的说明。

相册浏览器/选择器/照相机Demo:LGPhotoBrowser

你可能感兴趣的:(iOS的AssetsLibrary框架解读与应用 (转发))