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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容