2012-06-26 3 views
1

장치에 저장된 모든 이미지를 가져와 내 iPhone 앱에서 갤러리로 표시하고 싶습니다. UIImagePickerController는 모든 사진을 축소판보기로 표시하고 각 사진을 선택하면 특정 선택된 이미지의 데이터 만 가져옵니다. 대신 모든 사진을 한 번에 가져 와서 갤러리로 표시하고 싶습니다. 가능하면 가능합니까?이 작업을 수행하는 방법을 알려주십시오. AssetLibrary의 용도는 무엇입니까? 내가 성취해야 할 일을 돕는가? 그렇다면, AssetLibrary를 사용하여 이것을 달성하는 방법을 알려주십시오.장치에 저장된 모든 이미지를 가져 와서 iPhone SDK에서 갤러리로 표시하는 방법

+0

체크 아웃이 애플 개발자 문서 : pasawaya

답변

1

ALAssetsLibrary 인스턴스는 사진 응용 프로그램의 제어하에있는 비디오 및 사진에 대한 액세스를 제공합니다.

라이브러리에는 저장된 사진 앨범에있는 앨범, iTunes에서 온 앨범 및 장치로 직접 가져온 앨범이 포함됩니다. 이 도구를 사용하여 모든 자산 그룹의 목록을 검색하고 이미지 및 비디오를 저장된 사진 앨범에 저장합니다.

ELCImagePickerController은 iPhone 포토 앨범에있는 모든 사진을 가져 오는 예제 프로젝트입니다.

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 메서드 또는 당신이 필요로 이것을 구현했습니다. 이게 당신을 도울 수 있기를 바랍니다.

+0

이 allPhotosCollected 누락, 수 – jose920405

관련 문제