ALAssetsLibrary详解

ALAssetsLibrary类是代表系统中整个资源库,,使用它可以访问资源库中的资源和保存照片,视频等功能。

_library = [[ALAssetsLibrary alloc]init]; //判断当前应用是否能访问相册资源 /* typedef NS_ENUM(NSInteger, ALAuthorizationStatus) { ALAuthorizationStatusNotDetermined = 0, 用户尚未做出了选择这个应用程序的问候 ALAuthorizationStatusRestricted, 此应用程序没有被授权访问的照片数据。可能是家长控制权限。 ALAuthorizationStatusDenied, 用户已经明确否认了这一照片数据的应用程序访问. ALAuthorizationStatusAuthorized 用户已授权应用访问照片数据. } */ int author = [ALAssetsLibrary authorizationStatus]; NSLog(@"author type:%d",author); //关闭监听共享照片流产生的频繁通知信息 [ALAssetsLibrary disableSharedPhotoStreamsSupport]; //创建一个相册到相册资源中,并通过block返回创建成功的相册ALAssetsGroup [_library addAssetsGroupAlbumWithName:@"test" resultBlock:^(ALAssetsGroup *group) { //NSString *const ALAssetsGroupPropertyName; //NSString *const ALAssetsGroupPropertyType; //NSString *const ALAssetsGroupPropertyPersistentID; //NSString *const ALAssetsGroupPropertyURL; //查看相册的名字 NSLog(@"ALAssetsGroupPropertyName:%@",[group valueForProperty:ALAssetsGroupPropertyName]); //查看相册的类型 NSLog(@"ALAssetsGroupPropertyType:%@",[group valueForProperty:ALAssetsGroupPropertyType]); //查看相册的存储id NSLog(@"ALAssetsGroupPropertyPersistentID:%@",[group valueForProperty:ALAssetsGroupPropertyPersistentID]); //查看相册存储的位置地址 NSLog(@"ALAssetsGroupPropertyURL:%@",[group valueForProperty:ALAssetsGroupPropertyURL]); groupURL = [group valueForProperty:ALAssetsGroupPropertyURL]; } failureBlock:^(NSError *error) { }];

新添加了一个名为test的相册

[NSThread sleepForTimeInterval:0.5]; //通过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); }];

经验是由痛苦中粹取出来的

ALAssetsLibrary详解

相关文章:

你感兴趣的文章:

标签云: