转载自:http://www.cocoachina.com/bbs/read.php?tid=143383
我的创建相册代码:
-
(
void
)saveToAlbumWithMetadata:(
NSDictionary
*)metadata
imageData:(
NSData
*)imageData
customAlbumName:(
NSString
*)customAlbumName
completionBlock:(
void
(^)(
void
))completionBlock
failureBlock:(
void
(^)(
NSError
*error))failureBlock
{
ALAssetsLibrary
*assetsLibrary = [[ALAssetsLibrary alloc] init];
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)
{
[assetsLibrary
assetForURL:assetURL resultBlock:^(ALAsset *asset) {
[group
addAsset:asset];
if
(completionBlock)
{
completionBlock();
}
}
failureBlock:^(
NSError
*error)
{
if
(failureBlock)
{
failureBlock(error);
}
}];
}
else
{
AddAsset(assetsLibrary,
assetURL);
}
}
failureBlock:^(
NSError
*error)
{
AddAsset(assetsLibrary,
assetURL);
}];
}
else
{
if
(completionBlock)
{
completionBlock();
}
}
}];
}
-
(
void
)saveImage:(UIImage*)image{
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:@
"Flickr墙纸"
])
{
haveHDRGroup
=
YES
;
}
}
if
(!haveHDRGroup)
{
//do
add a group named "HDR"
[assetsLibrary
addAssetsGroupAlbumWithName:@
"Flickr墙纸"
resultBlock:^(ALAssetsGroup
*group)
{
[groups
addObject:group];
}
failureBlock:
nil
];
haveHDRGroup
=
YES
;
}
}
};
//创建相簿
[assetsLibrary
enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:listGroupBlock failureBlock:
nil
];
//在我的"扫一扫"代码中,生成的二维码图片存到新创建的相薄后显示全黑,后同事指点原来是下边红色方法的问题,后换了个方法实现了:
UIImageJPEGRepresentation(image,1)
[
self
saveToAlbumWithMetadata:
nil
imageData:
UIImagePNGRepresentation(image)
customAlbumName:@
"Flickr墙纸"
completionBlock:^
{
UIAlertView
*alert=[[UIAlertView alloc]initWithTitle:@
"保存成功"
message:@
"若想马上启用该墙纸,请进入图库找到该墙纸并设置为墙纸即可,感谢您的使用。"
delegate:
nil
cancelButtonTitle:@
"好"
otherButtonTitles:
nil
];
[alert
show];
}
failureBlock:^(
NSError
*error)
{
UIAlertView
*alert=[[UIAlertView alloc]initWithTitle:@
"保存失败"
message:error.description
delegate:
nil
cancelButtonTitle:@
"知道了"
otherButtonTitles:
nil
];
[alert
show];
//chenyong
下面这个方法可判断是否是因为用户拒绝访问地址所致 我测试了下,如果是中文环境返回 的是“用户拒绝访问”
if
(([myerror.localizedDescription rangeOfString:@"User
denied access"].location!=NSNotFound )|| ([myerror.localizedDescription
rangeOfString:@"用户拒绝访问"].location!=NSNotFound))
}];
}