BADRI
BADRI

Reputation: 643

how to prevent ALAssetsLibrary to get video thumbnail images with liabrary images?

I'm using the following code to access all ALAssetsLibrary images but the ALAssetsLibrary is giving me the saved video thumbnail images with the saved images from ALAssetsLibrary. how can i prevent this using the code so that i can get only saved images?

//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;

}

Upvotes: 0

Views: 1775

Answers (3)

Shamsudheen TK
Shamsudheen TK

Reputation: 31311

You can mention many types of Asset through ALAssetsGroupType

They are

   ALAssetsGroupLibrary        
   ALAssetsGroupAlbum          
   ALAssetsGroupEvent          
   ALAssetsGroupFaces          
   ALAssetsGroupSavedPhotos    
   ALAssetsGroupPhotoStream    
   ALAssetsGroupAll  

1

ALAssetsGroupLibrary

The Library group that includes all assets that are synced from iTunes.

Available in iOS 4.0 and later.

Declared in ALAssetsLibrary.h.

2

ALAssetsGroupAlbum

All the albums created on the device or synced from iTunes, not including Photo Stream or Shared Streams

Available in iOS 4.0 and later.

Declared in ALAssetsLibrary.h.

3

ALAssetsGroupEvent

All events, including those created during Camera Connection Kit import.

Available in iOS 4.0 and later.

Declared in ALAssetsLibrary.h.

4

ALAssetsGroupFaces

All the faces albums synced from iTunes.

Available in iOS 4.0 and later.

Declared in ALAssetsLibrary.h.

5

ALAssetsGroupSavedPhotos

All the photos in the Camera Roll.

Available in iOS 4.0 and later.

Declared in 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

The same as ORing together all the group types except for ALAssetsGroupLibrary.

Available in iOS 4.0 and later.

Declared in ALAssetsLibrary.h.

You can see more details developer.apple

Example:

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

Upvotes: 0

BlueVoodoo
BlueVoodoo

Reputation: 3686

Set a filter before you enumerate:

[group setAssetsFilter: [ALAssetsFilter allPhotos]];

Upvotes: 2

Rajneesh071
Rajneesh071

Reputation: 31081

Check your result, If it will image the add in array otherwise not

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];
        }
    }
};

Upvotes: 1

Related Questions