1

デバイスに保存されているすべての画像を取得し、iPhone アプリでギャラリーとして表示したいと考えています。UIImagePickerController はすべての写真をサムネイル ビューで表示し、各写真を選択すると、その特定の選択された画像のみのデータを取得します。代わりに、すべての写真を一度に取得してギャラリーとして表示したいと考えています。これは可能ですか、可能であれば方法を教えてください。AssetLibrary の用途は何ですか?. それは私が達成する必要があることを助けますか? はいの場合、AssetLibrary を使用してこれを達成する方法を教えてください。

4

2 に答える 2

1

ALAssetsLibraryのインスタンスは、写真アプリケーションの制御下にあるビデオと写真へのアクセスを提供します。

ライブラリには、保存された写真アルバムにあるもの、iTunes からのもの、およびデバイスに直接インポートされたものが含まれます。これを使用して、すべてのアセット グループのリストを取得し、画像とビデオを保存済みの写真アルバムに保存します。

ELCImagePickerControllerは、iPhone フォト アルバム内のすべての写真を取得するためのサンプル プロジェクトです。

于 2012-06-26T04:08:45.160 に答える
0

アセット ライブラリを使用して、デバイスからすべての写真を取得できます。これをアプリに実装しました

-(void)getAllPhotos{
   NSArray  *imageArray=[[NSArray alloc] init];
   NSMutableArray *mutableArray =[[NSMutableArray alloc]init];
    NSMutableArray* assetURLDictionaries = [[NSMutableArray alloc] init];

   ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];

    void (^assetEnumerator)( ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
        if(result != nil) {
            if([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto]) {
                [assetURLDictionaries addObject:[result valueForProperty:ALAssetPropertyURLs]];
               // NSLog(@"assestlibrarymurari%@",assetURLDictionaries);

                NSURL *url= (NSURL*) [[result defaultRepresentation]url];

                [library assetForURL:url
                         resultBlock:^(ALAsset *asset) {
                             UIImage *img = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullScreenImage]];
                             if(img){
                                 [mutableArray addObject:img];
                             }
//                                 [mutableArray addObject:[UIImage imageWithCGImage:[[asset defaultRepresentation] fullScreenImage]]];

                             if ([mutableArray count]==count)
                             {
                                 imageArray=[[NSArray alloc] initWithArray:mutableArray];
                                 [self allPhotosCollected:imageArray];
                             }
                         }
                        failureBlock:^(NSError *error){ NSLog(@"operation was not successfull!"); } ];

            }
        }
    };

    NSMutableArray *assetGroups = [[NSMutableArray alloc] init];

    void (^ assetGroupEnumerator) ( ALAssetsGroup *, BOOL *)= ^(ALAssetsGroup *group, BOOL *stop) {
        if(group != nil) {
            [group enumerateAssetsUsingBlock:assetEnumerator];
            [assetGroups addObject:group];
            NSLog(@"AssetGroup%@",assetGroups);
            count=[group numberOfAssets];
        }
    };

    assetGroups = [[NSMutableArray alloc] init];

    [library enumerateGroupsWithTypes:ALAssetsGroupAll
                           usingBlock:assetGroupEnumerator
                         failureBlock:^(NSError *error) {NSLog(@"There is an error");}];


}

ViewDidLoad または必要な場所でこのメソッドを呼び出します。これがお役に立てば幸いです。

于 2015-06-24T06:22:24.083 に答える