第一部分:保存到系统相册php
IOS保存图片功能只有一句话:UIImageWriteToSavedPhotosAlbum([erweima image], nil, nil,nil);ui
通常来讲这就够了,但有的时候须要根据保存反馈来进行下一步操做,能够加以下方法:.net
/**blog
* save image to photo album completion method图片
*get
* @param image saved imageit
* @param error saved error, if is not null that means save successio
* @param contextInfo I don't kown😄table
*/select
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
if (error != NULL){
//失败
}
else{
//成功
}
}
调用的时候这样写:UIImageWriteToSavedPhotosAlbum([erweima image], self, @selector(image:didFinishSavingWithError:contextInfo:),nil);
我也是刚查的,参考博文:http://blog.cnrainbird.com/index.php/2012/07/11/uiimagewritetosavedphotosalbum_pan_duan_shi_fou_bao_cun_cheng_gong/
第二部分:建立自定义相册,并保存图片,代码为主,可直接赋值,可是有个bug,暂时没找到怎么处理,若是有会的大神请指教一下
/**
* 建立自定义相册
Bug:详情见此方法中 TODO
*/
-(void)createAFonderInAlbum {
ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];
NSMutableArray *groups=[[NSMutableArray alloc]init];
ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock = ^(ALAssetsGroup *group, BOOL *stop)
{
if (group)
{
[groups addObject:group];
}
else
{
BOOL haveHDRGroup = NO;
for (ALAssetsGroup *gp in groups)
{
NSString *name =[gp valueForProperty:ALAssetsGroupPropertyName];
if ([name isEqualToString:@"你的相册名"])
{
haveHDRGroup = YES;
}
}
if (!haveHDRGroup)
{
//do add a group named "XXXX"
[assetsLibrary addAssetsGroupAlbumWithName:@"你的相册名"
resultBlock:^(ALAssetsGroup *group)
{
if (group == nil) {//TODO Bug,第一次建立OK,当我在相册里删除刚建立的自定义相册后,再次建立,此时 group == nil
return ;
}
[groups addObject:group];
}
failureBlock:nil];
haveHDRGroup = YES;
}
}
};
//建立相簿
[assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:listGroupBlock failureBlock:nil];
//保存图片到刚建立的相册中
[self saveToAlbumWithMetadata:nil imageData:UIImagePNGRepresentation([erweima image]) customAlbumName:@"你的相册名" completionBlock:^{
//成功
} failureBlock:^(NSError *error) {
//失败
}];
}
/**
* save image to custom album
*
* @param metadata I have not use it,just nil
* @param imageData image png data to save
* @param customAlbumName custom album name
* @param completionBlock finish block,success
* @param failureBlock finish block,fail
*/
- (void)saveToAlbumWithMetadata:(NSDictionary *)metadata
imageData:(NSData *)imageData
customAlbumName:(NSString *)customAlbumName
completionBlock:(void (^)(void))completionBlock
failureBlock:(void (^)(NSError *error))failureBlock
{
ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];
__weak ALAssetsLibrary *weakSelf = assetsLibrary;
void (^AddAsset)(ALAssetsLibrary *, NSURL *) = ^(ALAssetsLibrary *assetsLibrary, NSURL *assetURL) {
[assetsLibrary assetForURL:assetURL resultBlock:^(ALAsset *asset) {
[assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if ([[group valueForProperty:ALAssetsGroupPropertyName] isEqualToString:customAlbumName]) {
[group addAsset:asset];
if (completionBlock) {
completionBlock();
}
}
} failureBlock:^(NSError *error) {
if (failureBlock) {
failureBlock(error);
}
}];
} failureBlock:^(NSError *error) {
if (failureBlock) {
failureBlock(error);
}
}];
};
[assetsLibrary writeImageDataToSavedPhotosAlbum:imageData metadata:metadata completionBlock:^(NSURL *assetURL, NSError *error) {
if (customAlbumName) {
[assetsLibrary addAssetsGroupAlbumWithName:customAlbumName resultBlock:^(ALAssetsGroup *group) {
if (group) {
[weakSelf assetForURL:assetURL resultBlock:^(ALAsset *asset) {
[group addAsset:asset];
if (completionBlock) {
completionBlock();
}
} failureBlock:^(NSError *error) {
if (failureBlock) {
failureBlock(error);
}
}];
} else {
AddAsset(weakSelf, assetURL);
}
} failureBlock:^(NSError *error) {
AddAsset(weakSelf, assetURL);
}];
} else {
if (completionBlock) {
completionBlock();
}
}
}];
}
参考连接:http://www.jianshu.com/p/e6b5d55fd6ec