ALAssetsLibrary學習總結

來源:互聯網
上載者:User

標籤: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);}];






聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.