2012-04-14 6 views
7

Próbuję stworzyć aplikację, która pobierze obrazy (z witryny fotografii) i utworzy zestaw ALA dla każdego obrazu, a następnie umieści go pod nową grupą ALAssetsGroup.Jak utworzyć nowy zestaw ALA z pobranego obrazu?

Jestem w stanie utworzyć nowy album (ALAssetsGroup) i pobrać dane ze strony internetowej. Jednak trochę utknąłem na tym, jak stworzyć nowy zestaw ALA.

Próbowałem się następująco

  ALAsset *asset = [[[ALAsset alloc] init] autorelease]; 
      NSDictionary *metadata = [NSDictionary dictionaryWithObjectsAndKeys:p.id, @"id", p.thumbnail_url, @"thumbnail_url", p.photo_url, @"photo_url", nil]; 
      [asset setImageData:data metadata:metadata completionBlock:^(NSURL *assetURL, NSError *error) { 
       ESLog(@"Asset %@ created error:%@", assetURL, error); 
       [group addAsset:asset]; 
      }]; 

jednak uzyskać wydruki gdzie zarówno assetURL i błędów jest pusty.

2012-04-15 02:58:06.850 XXXXXX.com[5966:c607] Asset (null) created error:(null) 

Byłoby wspaniale, gdyby ktoś może sugerować, w jaki sposób można utworzyć nowy zasób w albumie

Odpowiedz

6

nie można utworzyć nowy ALAsset tak. Co trzeba zrobić, to zaoszczędzić danych obrazowych do Photo-Biblioteka stosując metodę:

- (void)writeImageDataToSavedPhotosAlbum:(NSData *)imageData metadata:(NSDictionary *)metadata completionBlock:(ALAssetsLibraryWriteImageCompletionBlock)completionBlock 

Blok ukończenie zwróci bibliotece NSURL dla nowo utworzonego zasobu. Używanie metody NSURL zwróci instancję ALAsset nowo utworzonego zasobu.

Pozdrawiam.

Hendrik

+0

Dzięki, że jest to, jak skończyło się to robić. – mithuntnt

1

Można użyć funkcji UIImageWriteToSavedPhotosAlbum zapisać UIImage do dachowania aparatu. Jest to opisane here.

Następnie można go pobrać z biblioteki Zasób.

1

Nawet łatwiej użyć następującego kodu:

//Save to photo album 
    UIImage *img = [[[UIImage alloc] initWithData:imageData] autorelease]; 
    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 
    [library writeImageToSavedPhotosAlbum:img.CGImage 
           metadata:[info objectForKey:UIImagePickerControllerMediaMetadata] 
          completionBlock:^(NSURL *assetURL, NSError *error) { 
           NSLog(@"assetURL %@", assetURL); 
          }]; 
+0

to jest dokładnie to, co robię, ale assetURL ma wartość null ... –

Powiązane problemy