標籤:alassetslibrary assetslibrary valueforproperty completionblock
添加AssetsLibrary.framework
然後引入
#import <AssetsLibrary/ALAssetsLibrary.h>
一個擷取所有圖片的類
.h
#import <UIKit/UIKit.h>#include<AssetsLibrary/AssetsLibrary.h> @interface ViewController : UIViewController{ ALAssetsLibrary *library; NSArray *imageArray; NSMutableArray *mutableArray;}-(void)allPhotosCollected:(NSArray*)imgArray;@end
.m
#import "ViewController.h"@interface ViewController ()@endstatic int count=0;@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad]; [self getAllPictures];}//擷取所有圖片-(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
以下是關於AssetsLibrary的一些方法說明,僅供參考
//初始化,這個簡單if (!self.assetsLibrary) {_assetsLibrary = [[ALAssetsLibrary alloc] init];}
//添加一個group,成功後查看一些資訊[_assetsLibrary addAssetsGroupAlbumWithName:@"tesddt" resultBlock:^(ALAssetsGroup *group) {//查看相簿的名字NSLog(@"ALAssetsGroupPropertyName:%@",[group valueForProperty:ALAssetsGroupPropertyName]);//查看相簿的類型NSLog(@"ALAssetsGroupPropertyType:%@",[group valueForProperty:ALAssetsGroupPropertyType]);//查看相簿的儲存idNSLog(@"ALAssetsGroupPropertyPersistentID:%@",[group valueForProperty:ALAssetsGroupPropertyPersistentID]);//查看相簿儲存的位置地址NSLog(@"ALAssetsGroupPropertyURL:%@",[group valueForProperty:ALAssetsGroupPropertyURL]);} failureBlock:^(NSError *error) {}];
可以通過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 ] ;
//通過url地址在相簿資源中擷取該地址的資源檔ALAsset,有可能是相片或視頻[_library assetForURL:[NSURL URLWithString:@""] resultBlock:^(ALAsset *asset) {// NSString *const ALAssetPropertyType;// NSString *const ALAssetPropertyLocation;// NSString *const ALAssetPropertyDuration;// NSString *const ALAssetPropertyOrientation;// NSString *const ALAssetPropertyDate;// NSString *const ALAssetPropertyRepresentations;// NSString *const ALAssetPropertyURLs;// NSString *const ALAssetPropertyAssetURL;//查看資源的地理位置資訊NSLog(@"ALAssetPropertyLocation:%@",[asset valueForProperty:ALAssetPropertyLocation]);//如果資源是視頻,查看視頻的時間長度NSLog(@"ALAssetPropertyDuration:%@",[asset valueForProperty:ALAssetPropertyDuration]);//查看資源的方向,圖片的旋轉方向NSLog(@"ALAssetPropertyOrientation:%@",[asset valueForProperty:ALAssetPropertyOrientation]);//查看資源的建立時間NSLog(@"ALAssetPropertyDate:%@",[asset valueForProperty:ALAssetPropertyDate]);//查看資源的描述資訊NSLog(@"ALAssetPropertyRepresentations:%@",[asset valueForProperty:ALAssetPropertyRepresentations]);NSLog(@"ALAssetPropertyURLs:%@",[asset valueForProperty:ALAssetPropertyURLs]);//查看資源的url路徑NSLog(@"ALAssetPropertyAssetURL:%@",[asset valueForProperty:ALAssetPropertyAssetURL]);} failureBlock:^(NSError *error) {}];
//通過url地址擷取相簿資源中的一個相簿[_library groupForURL:groupURL resultBlock:^(ALAssetsGroup *group) {NSLog(@"ALAssetsGroupPropertyName:%@",[group valueForProperty:ALAssetsGroupPropertyName]);} failureBlock:^(NSError *error) {}];
//根據選擇的類型遍曆相簿資源中的相對應類型的所有相簿,其中stop行參是指標,表示是否停止迭代,當賦值為false則停止// enum {// ALAssetsGroupLibrary = (1 << 0),// ALAssetsGroupAlbum = (1 << 1),// ALAssetsGroupEvent = (1 << 2),// ALAssetsGroupFaces = (1 << 3),// ALAssetsGroupSavedPhotos = (1 << 4),// ALAssetsGroupPhotoStream = (1 << 5),// ALAssetsGroupAll = 0xFFFFFFFF,// };[_library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {NSLog(@"group name:%@",[group valueForProperty:ALAssetsGroupPropertyName]);} failureBlock:^(NSError *error) {}];
//儲存圖片到系統預設的相簿中,使用nsdata的形式,並返回照片的url地址[_library writeImageDataToSavedPhotosAlbum:nil metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {}];
//儲存圖片到系統預設的相簿中,使用cgimageref的形式,並返回照片的url地址[_library writeImageToSavedPhotosAlbum:nil metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {}];
//儲存圖片到系統預設的相簿中,使用cgimageref的形式,並且選擇圖片以什麼旋轉方向的形式儲存,並返回照片的url地址// typedef enum {// ALAssetOrientationUp, // default orientation// ALAssetOrientationDown, // 180 deg rotation// ALAssetOrientationLeft, // 90 deg CCW// ALAssetOrientationRight, // 90 deg CW// ALAssetOrientationUpMirrored, // as above but image mirrored along other axis. horizontal flip// ALAssetOrientationDownMirrored, // horizontal flip// ALAssetOrientationLeftMirrored, // vertical flip// ALAssetOrientationRightMirrored, // vertical flip// } ALAssetOrientation;UIImage* image = [UIImage imageNamed:@"test.png"];[_library writeImageToSavedPhotosAlbum:[image CGImage] orientation:ALAssetOrientationLeft completionBlock:^(NSURL *assetURL, NSError *error) {NSLog(@"save image:%@",assetURL);}];