访问自定义相册

时间:2014-06-01 14:49:32

标签: ios uiimage image-gallery alassetslibrary

我的应用为用户创建了独特的照片,然后将其保存在自定义相册中:

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library saveImage:thisimage toAlbum:@"Test Album" withCompletionBlock:^(NSError *error) {
    if (error!=nil) {
        NSLog(@"Album save error: %@", [error description]);
    }
}];

当用户输入应用程序时,我想给他们一个自定义滑块,显示他们保存在"测试专辑"先前。如何仅在"测试相册"中获取照片?作为UIImages所以我可以向用户显示它们吗?

2 个答案:

答案 0 :(得分:0)

1)使用enumerateGroupsWithTypes:usingBlock:failureBlock:枚举ALAsset库中的组。

2)检查群组的ALAssetsGroupPropertyName是否等于您使用valueForProperty:搜索的相册名称。

<强>实施例

NSString * groupName = [group valueForProperty:ALAssetsGroupPropertyName];
[groupName localizedCaseInsensitiveCompare:albumName] == NSOrderedSame

3)找到论坛后,使用enumerateAssetsUsingBlock:枚举其中的资产。

4)每ALAssetdefaultRepresentation检索fullScreenImage,然后ALAssetRepresentation * assetRepresentation = [asset defaultRepresentation]; CGImageRef imageRef = [assetRepresentation fullScreenImage];

<强>实施例

ALAsset

5)每{{}}} UIImageOrientation使用ALAssetPropertyOrientationvalueForProperty:检索 UIImageOrientation imageOrientation = [[asset valueForProperty:ALAssetPropertyOrientation] intValue];

<强>实施例

ALAsset

6)使用UIImageimageWithCGImage:scale:orientation:每个fullScreenImage分配/初始化UIImageOrientation。然后,插入您在步骤4和5中检索到的UIImage * image = [UIImage imageWithCGImage:imageRef scale:1.0f orientation:imageOrientation]; UIImage

<强>实施例

NSMutableArray

7)一旦你已经分配了/ init'd {{1}}将其添加到{{1}}。

8)枚举完成后,将图像呈现给用户。

注意:

用于枚举组和资产的两种方法都是异步的,这意味着它们将立即返回。

答案 1 :(得分:0)

很简单..我添加了我的代码。

    [_library enumerateGroupsWithTypes:ALAssetsGroupAll  usingBlock:^(ALAssetsGroup *group, BOOL *stop){

    if ([[group valueForProperty:ALAssetsGroupPropertyName] isEqual:@"Test Album"]) {
        void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop)
        {
            if(result != nil)
            {
                [self.assets addObject:result]; //assets is NSMutableArray
            }
        };

            [group setAssetsFilter:[ALAssetsFilter allPhotos]];
            [group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:assetEnumerator];
    }

    [self.collectionView reloadData];
}
                      failureBlock:^(NSError *error){

                          NSLog(@"failure"); }];}

希望这有用,....享受。