https://github.com/gang544043963/LGPhotoBrowser
iOS提供的AssetsLibrary框架是用來(lái)讀取和操作本地相冊(cè)的,連接了我們應(yīng)用程序和相冊(cè)之間的訪問(wèn), 該框架提供一下6個(gè)類:ALAssetsLibrary,AssetsLibrary葫男,ALAssetsGroup凄诞,ALAsset驶俊,ALAssetsFilter桑滩,ALAssetRepresentation。
ALAssetsLibrary類可以實(shí)現(xiàn)查看相冊(cè)列表颠放,增加相冊(cè)排惨,保存圖片到相冊(cè)等功能。
常用的幾個(gè)方法:
1. 獲得相冊(cè)的組別(Get the list of groups that match the given types)
[objc]view plaincopy
-?(void)enumerateGroupsWithTypes:(ALAssetsGroupType)typesusingBlock:(ALAssetsLibraryGroupsEnumerationResultsBlock)enumerationBlockfailureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock;
在這個(gè)方法的enumerationBlock中讀取分組列表碰凶,包括它的名稱暮芭、封面圖片等等。
2. 返回一個(gè)ALAsset對(duì)象(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. 和上面類似欲低,返回一個(gè)ALAssetsGroup對(duì)象
[objc]view plaincopy
-?(void)groupForURL:(NSURL*)groupURLresultBlock:(ALAssetsLibraryGroupResultBlock)resultBlockfailureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock
沒(méi)提供什么方法辕宏,就是一個(gè)包含其他五個(gè)類的一個(gè)頭文件
ALAssetsGroup就是相冊(cè)組的類,可以通過(guò)這個(gè)類提供的方法來(lái)獲取相冊(cè)組的各種信息砾莱。
1. 獲得 名稱瑞筐,類型,ID腊瑟,NSURL
- (id)valueForProperty:(NSString *)property;
property可以是:
ALAssetsGroupPropertyName(名稱)
ALAssetsGroupPropertyType(類型)
ALAssetsGroupPropertyPersistentID(ID)
ALAssetsGroupPropertyURL (NSURL)
2. 獲得相冊(cè)分組的封面圖片
- (CGImageRef)posterImage;
注意使用:
[objc]view plaincopy
//獲取相冊(cè)group的封面
cell.imageView.image=?[UIImageimageWithCGImage:[groupposterImage]];
3. 過(guò)濾器
- (void)setAssetsFilter:(ALAssetsFilter *)filter
ALAssetsFilter中有這些方法聚假,是過(guò)濾類型
[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. 獲得相冊(cè)的組的數(shù)量
[objc]view plaincopy
-?(NSInteger)numberOfAssets;
5. 通過(guò)相冊(cè)組獲取里面的圖片:
[objc]view plaincopy
-?(void)enumerateAssetsUsingBlock:(ALAssetsGroupEnumerationResultsBlock)enumerationBlock;
-?(void)enumerateAssetsWithOptions:(NSEnumerationOptions)optionsusingBlock:(ALAssetsGroupEnumerationResultsBlock)enumerationBlock;
-?(void)enumerateAssetsAtIndexes:(NSIndexSet*)indexSetoptions:(NSEnumerationOptions)optionsusingBlock:(ALAssetsGroupEnumerationResultsBlock)enumerationBlock;
一般使用第一個(gè)块蚌。
6. 增加圖片
[objc]view plaincopy
-?(BOOL)addAsset:(ALAsset*)asset
上面說(shuō)過(guò)了,提供了三種過(guò)濾方法:
[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對(duì)象封裝了一個(gè)給定ALAsset對(duì)象的陳述
直接上代碼說(shuō)明問(wèn)題膘格。參考點(diǎn)擊打開(kāi)鏈接
[objc]view plaincopy
//獲取資源圖片的詳細(xì)資源信息
ALAssetRepresentation*?representation?=?[assetdefaultRepresentation];
//獲取資源圖片的長(zhǎng)寬
CGSize?dimension?=?[representationdimensions];
//獲取資源圖片的高清圖
[representationfullResolutionImage];
//獲取資源圖片的全屏圖
[representationfullScreenImage];
//獲取資源圖片的名字
NSString*?filename?=?[representationfilename];
NSLog(@"filename:%@",filename);
//縮放倍數(shù)
[representationscale];
//圖片資源容量大小
[representationsize];
//圖片資源原數(shù)據(jù)
[representationmetadata];
//旋轉(zhuǎn)方向
[representationorientation];
//資源圖片url地址峭范,該地址和ALAsset通過(guò)ALAssetPropertyAssetURL獲取的url地址是一樣的
NSURL*?url?=?[representationurl];
NSLog(@"url:%@",url);
//資源圖片uti,唯一標(biāo)示符
NSLog(@"uti:%@",[representationUTI]);
照片類瘪贱,這里要說(shuō)的就是
[objc]view plaincopy
-?(id)valueForProperty:(NSString*)property;
property有如下類型:
1.ALAssetPropertyType資源的類型(照片纱控,視頻)
2.ALAssetPropertyLocation資源地理位置(無(wú)位置信息返回null)
3.ALAssetPropertyDuation播放時(shí)長(zhǎng)(照片返回ALErorInvalidProperty)
4.ALAssetPropertyOrientation方向(共有8個(gè)方向,參見(jiàn):ALAssetOrientation)
5.ALAssetPropertyDate 拍攝時(shí)間(包含了年與日時(shí)分秒)
6.ALAssetPropertyRepresentations描述(打印看了下菜秦,只有帶后綴的名稱)
7.ALAssetPropertyURLs(返回一個(gè)字典甜害,鍵值分別是文件名和文件的url)
8.ALAssetPropertyAssetURL文件的url
得到縮略圖
[objc]view plaincopy
-?(CGImageRef)thumbnail;
以上是AssetsLibrary框架中所有類的說(shuō)明。
相冊(cè)瀏覽器/選擇器/照相機(jī)Demo:LGPhotoBrowser