ios中通过ALAssetsLibrary获取所有图片
通過創建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获取所有图片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 源代码管理GIT
- 下一篇: Xcode中添加代码块的方式