1

次のコードを使用してすべてのALAssetsLibrary画像にアクセスしていますが、ALAssetsLibraryは、ALAssetsLibraryから保存された画像とともに保存されたビデオサムネイル画像を提供しています。保存された画像のみを取得できるように、コードを使用してこれを防ぐにはどうすればよいですか?

//Method to get all images from devices library
 - (NSMutableArray*)getAllImagesFromLibrary
 {
     //get all images from image library
     void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
     if(result != NULL) {
         //Insert objects into array
         [self.arrOfAllImages addObject:result];
        }
     };

     void (^assetGroupEnumerator)(ALAssetsGroup *, BOOL *) =  ^(ALAssetsGroup *group, BOOL *stop) {
     if(group != nil) {
         [group enumerateAssetsUsingBlock:assetEnumerator];
        }
     };

     //NSMutableArray allacation
     NSMutableArray *arrOfAllImage = [[NSMutableArray alloc] init];
     static dispatch_once_t pred = 0;
     static ALAssetsLibrary *library = nil;
     dispatch_once(&pred, ^{
         library = [[ALAssetsLibrary alloc] init];
     });

     [library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
     usingBlock:assetGroupEnumerator
     failureBlock: ^(NSError *error) {
         NSLog(@"Failure");
     }];

     return arrOfAllImage;

}
4

3 に答える 3

2

列挙する前にフィルターを設定します。

[group setAssetsFilter: [ALAssetsFilter allPhotos]];
于 2013-02-27T16:05:32.637 に答える
1

結果を確認します。それ以外の場合は、アドイン配列をイメージします。

void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
    if(result != NULL) {
        if ([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto])
        {
            //Insert objects into array
            [self.arrOfAllImages addObject:result];
        }
    }
};
于 2013-02-27T15:58:52.123 に答える
0

ALAssetsGroupTypeを介して多くの種類のアセットに言及できます

彼らです

   ALAssetsGroupLibrary        
   ALAssetsGroupAlbum          
   ALAssetsGroupEvent          
   ALAssetsGroupFaces          
   ALAssetsGroupSavedPhotos    
   ALAssetsGroupPhotoStream    
   ALAssetsGroupAll  

1

ALAssetsGroupLibrary

iTunesから同期されるすべてのアセットを含むライブラリグループ。

iOS4.0以降で利用できます。

で宣言されていALAssetsLibrary.hます。

2

ALAssetsGroupAlbum

デバイスで作成された、またはiTunesから同期されたすべてのアルバム(フォトストリームまたは共有ストリームを除く)

iOS4.0以降で利用できます。

で宣言されていALAssetsLibrary.hます。

3

ALAssetsGroupEvent

CameraConnectionKitのインポート中に作成されたイベントを含むすべてのイベント。

iOS4.0以降で利用できます。

で宣言されていALAssetsLibrary.hます。

4

ALAssetsGroupFaces

iTunesから同期されたすべての顔のアルバム。

iOS4.0以降で利用できます。

で宣言されていALAssetsLibrary.hます。

5

ALAssetsGroupSavedPhotos

カメラロールのすべての写真。

iOS4.0以降で利用できます。

で宣言されていALAssetsLibrary.hます。

6

**ALAssetsGroupPhotoStream**

The PhotoStream album.

In iOS 6.0 and later, this also includes Shared Streams.

Available in iOS 5.0 and later.

Declared in `ALAssetsLibrary.h`.

7

ALAssetsGroupAll

ALAssetsGroupLibraryを除くすべてのグループタイプをORで結合するのと同じです。

iOS4.0以降で利用できます。

で宣言されていALAssetsLibrary.hます。

あなたは詳細を見ることができますdeveloper.apple

 [library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
     usingBlock:assetGroupEnumerator
     failureBlock: ^(NSError *error) {
         NSLog(@"Failure");
     }];
于 2013-02-28T04:48:24.893 に答える