您的位置:首页 > 移动开发 > IOS开发

ios 保存图片到自己创建的相册

2014-11-04 21:17 309 查看
在QQ群里面看到有人问保存图片到自定义相册的办法:

直接上代码:

#import <Foundation/Foundation.h>
#import <AssetsLibrary/AssetsLibrary.h>

typedef void(^SaveImageCompletion)(NSError* error);

@interface ALAssetsLibrary(CustomPhotoAlbum)

-(void)saveImage:(UIImage*)image toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock;
-(void)addAssetURL:(NSURL*)assetURL toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock;

@end


#import "ALAssetsLibrary+CustomPhotoAlbum.h"

@implementation ALAssetsLibrary(CustomPhotoAlbum)

-(void)saveImage:(UIImage*)image toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock
{
//write the image data to the assets library (camera roll)
[self writeImageToSavedPhotosAlbum:image.CGImage orientation:(ALAssetOrientation)image.imageOrientation
completionBlock:^(NSURL* assetURL, NSError* error) {

//error handling
if (error!=nil) {
completionBlock(error);
return;
}

//add the asset to the custom photo album
[self addAssetURL: assetURL
toAlbum:albumName
withCompletionBlock:completionBlock];

}];
}

-(void)addAssetURL:(NSURL*)assetURL toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock
{
__block BOOL albumWasFound = NO;

//search all photo albums in the library
[self enumerateGroupsWithTypes:ALAssetsGroupAlbum
usingBlock:^(ALAssetsGroup *group, BOOL *stop) {

//compare the names of the albums
if ([albumName compare: [group valueForProperty:ALAssetsGroupPropertyName]]==NSOrderedSame) {

//target album is found
albumWasFound = YES;

//get a hold of the photo's asset instance
[self assetForURL: assetURL
resultBlock:^(ALAsset *asset) {

//add photo to the target album
[group addAsset: asset];

//run the completion block
completionBlock(nil);

} failureBlock: completionBlock];

//album was found, bail out of the method
return;
}

if (group==nil && albumWasFound==NO) {
//photo albums are over, target album does not exist, thus create it

__weak ALAssetsLibrary* weakSelf = self;

//create new assets album
[self addAssetsGroupAlbumWithName:albumName
resultBlock:^(ALAssetsGroup *group) {

//get the photo's instance
[weakSelf assetForURL: assetURL
resultBlock:^(ALAsset *asset) {

//add photo to the newly created album
[group addAsset: asset];

//call the completion block
completionBlock(nil);

} failureBlock: completionBlock];

} failureBlock: completionBlock];

//should be the last iteration anyway, but just in case
return;
}

} failureBlock: completionBlock];

}

@end


使用的时候只要调用:

-(void)saveImage:(UIImage*)image toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock;即可……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: