2012-04-14 13 views
7

私は写真サイトから画像をダウンロードし、各画像のALAssetを作成し、新しいALAssetsGroupの下に配置するアプリケーションを開発しようとしています。ダウンロードした画像から新しいALAssetを作成する方法

私は新しいアルバム(ALAssetsGroup)を作成し、ウェブサイトからデータをダウンロードすることができます。しかし、私は少し新しいALAssetを作成する方法に固執しています。

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

を次のように私はassetURLとエラーの両方が空であるプリントを得るしかし、私が試してみました

です。

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

誰かがあなたがそのような新しいALAssetを作成カント私はアルバムに

答えて

6

を新しい資産を作成する方法を提案することができればそれは素晴らしいことです。

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

完了ブロックが新たな作成資産のためNSURLを返します。あなたがする必要がどのような は、メソッドを使用してフォトライブラリにあなたの画像データを保存しています。メソッドを使用すると、NSURLを使用して、新しく作成されたアセットのALAssetインスタンスが返されます。

- (void)assetForURL:(NSURL *)assetURL resultBlock:(ALAssetsLibraryAssetForURLResultBlock)resultBlock failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock 

乾杯。

ヘンドリック

+0

おかげで、それは私がそれをやってしまった方法です。 – mithuntnt

1

あなたはカメラのロールオーバーにUIImageを保存するためにUIImageWriteToSavedPhotosAlbum機能を使用することができます。

void UIImageWriteToSavedPhotosAlbum (
    UIImage *image, 
    id  completionTarget, 
    SEL  completionSelector, 
    void  *contextInfo 
); 

hereと記載されている。

次に、アセットライブラリからそれを取り上げることができます。

1

でも簡単に次のコードを使用し

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

これはまさに私がやっていることですが、assetURLはnullです... –

関連する問題