如何防止ALAssetsLibrary获取带有库图像的视频缩略图?

时间:2013-02-27 13:46:06

标签: iphone objective-c xcode alassetslibrary alasset

我正在使用以下代码访问所有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;

}

3 个答案:

答案 0 :(得分:2)

在枚举之前设置filter

[group setAssetsFilter: [ALAssetsFilter allPhotos]];

答案 1 :(得分: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];
        }
    }
};

答案 2 :(得分:0)

您可以通过 ALAssetsGroupType

提及多种类型的资产

他们是

   ALAssetsGroupLibrary        
   ALAssetsGroupAlbum          
   ALAssetsGroupEvent          
   ALAssetsGroupFaces          
   ALAssetsGroupSavedPhotos    
   ALAssetsGroupPhotoStream    
   ALAssetsGroupAll  

1

  

<强> ALAssetsGroupLibrary

     

图书馆组,其中包含同步的所有资产   的iTunes。

     

适用于iOS 4.0及更高版本。

     

ALAssetsLibrary.h

中声明

2

  

<强> ALAssetsGroupAlbum

     

在设备上创建或从iTunes同步的所有相册,而不是   包括Photo Stream或Shared Streams

     

适用于iOS 4.0及更高版本。

     

ALAssetsLibrary.h

中声明

3

  

<强> ALAssetsGroupEvent

     

所有事件,包括在Camera Connection Kit中创建的事件   导入。

     

适用于iOS 4.0及更高版本。

     

ALAssetsLibrary.h

中声明

4

  

<强> ALAssetsGroupFaces

     

从iTunes同步所有面孔专辑。

     

适用于iOS 4.0及更高版本。

     

ALAssetsLibrary.h

中声明

5

  

<强> ALAssetsGroupSavedPhotos

     

相机胶卷中的所有照片。

     

适用于iOS 4.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

     

与除了以外的所有组类型的ORing相同   ALAssetsGroupLibrary。

     

适用于iOS 4.0及更高版本。

     

ALAssetsLibrary.h

中声明

您可以查看更多详情developer.apple

示例

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