我正在使用ALAssetsLibrary将图像保存在app中的海关相册中。我能够保存图像但无法从相册中获取图像
__weak ALAssetsLibrary *lib = self.library;
[self.library addAssetsGroupAlbumWithName:@"MyAlbum" resultBlock:^(ALAssetsGroup *group) {
///checks if group previously created
if(group == nil){
//enumerate albums
[lib enumerateGroupsWithTypes:ALAssetsGroupAlbum
usingBlock:^(ALAssetsGroup *g, BOOL *stop)
{
//if the album is equal to our album
if ([[g valueForProperty:ALAssetsGroupPropertyName] isEqualToString:@"My Photo Album"]) {
//save image
[lib writeImageDataToSavedPhotosAlbum:UIImagePNGRepresentation(image) metadata:nil
completionBlock:^(NSURL *assetURL, NSError *error) {
//then get the image asseturl
[lib assetForURL:assetURL
resultBlock:^(ALAsset *asset) {
//put it into our album
[g addAsset:asset];
} failureBlock:^(NSError *error) {
}];
}];
}
}failureBlock:^(NSError *error){
}];
}else{
// save image directly to library
[lib writeImageDataToSavedPhotosAlbum:UIImagePNGRepresentation(image) metadata:nil
completionBlock:^(NSURL *assetURL, NSError *error) {
[lib assetForURL:assetURL
resultBlock:^(ALAsset *asset) {
[group addAsset:asset];
} failureBlock:^(NSError *error) {
}];
}];
}
} failureBlock:^(NSError *error) {
}];
如何从MyAlbum获取图像。我想逐个获取所有图片。
答案 0 :(得分:1)
试试这段代码。
-(void)getImageVideosFromGallery:(void(^)(void))completion{
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
NSString *albumName = [group valueForProperty:ALAssetsGroupPropertyName];
if ([albumName isEqualToString:@"MyAlbum"]) {
[group setAssetsFilter:[ALAssetsFilter allAssets]];
[group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *alAsset, NSUInteger index, BOOL *innerStop) {
if (alAsset) {
if ([[alAsset valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypeVideo]) {
NSLog(@"Video");
}
else{
ALAssetRepresentation *representation = [alAsset defaultRepresentation];
UIImage *imgThumb = [UIImage imageWithCGImage:[alAsset thumbnail]];
UIImage *imgOriginal = [UIImage imageWithCGImage:[[alAsset defaultRepresentation]fullScreenImage]];
}
}
}];
if (group == nil)
{
completion();
}
}
}failureBlock: ^(NSError *error) {
NSLog(@"No groups");
}];
}
答案 1 :(得分:1)
你可以尝试这种方式..
-(void)loadlibraryImages
{
NSMutableArray * _recentpictureArray=[[NSMutableArray alloc]init];
ALAssetsLibrary *_library = [[ALAssetsLibrary alloc] init];
[_library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop){
if ([[group valueForProperty:ALAssetsGroupPropertyName] isEqual:@"MyAlbum"]) {
void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop)
{
if(result != nil)
{
[_recentpictureArray addObject:result];
}
};
[group setAssetsFilter:[ALAssetsFilter allPhotos]];
[group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:assetEnumerator];
}
[self.collectionview reloadData]; // you can reload your collection view
}
failureBlock:^(NSError *error){
NSLog(@"failure"); }];
NSLog(@"Count : %lu",(unsigned long)[_recentpictureArray count]);
}
然后从这个获取拇指图像,
ALAsset *asset = [_recentpictureArray objectAtIndex:indexPath.row];
CGImageRef thumbnailImageRef = [asset aspectRatioThumbnail];
UIImage *thumbnail = [UIImage imageWithCGImage:thumbnailImageRef];
// Then set your image view's image.
就是这样。关于ios9的这项工作。希望这很有用。谢谢