iPhone 画像をアルバムに保存する

本日は、画像(UIImage)をアルバムに登録する処理を書きたいと思います。
忘れないようにメモめも。

保存するには以下の関数を利用します。
○ UIImageWriteToSavedPhotosAlbum


保存方法はカンタン。以下のようなコーディングをします。

// 保存するメソッド
- (void) save {
UIImage *image = [self.canvasView UIImage];
SEL sel = @selector(savingImageIsFinished:didFinishSavingWithError:contextInfo:);
UIImageWriteToSavedPhotosAlbum(image, self, sel, NULL);
}

// 保存完了を通知するメソッド
- (void) savingImageIsFinished:(UIImage *)_image didFinishSavingWithError:(NSError *)_error contextInfo:(void *)_contextInfo{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"End"message:@"image save completed"delegate:nilcancelButtonTitle:@"OK"otherButtonTitles:nil];
[alert show];
[alert release];
}

上記では、「save」というメソッドの中で、Viewから生成したイメージをアルバムに保存しています。そして保存に成功したら「savingImageIsFinished:didFinishSavingWithError:contextInfo:」というメソッドを呼び出して、アラートでユーザに保存完了を知らせています。(エラー処理はしてませんが)。



さて、UIImageWriteToSavedPhotosAlbumの引数の使い方です。

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

■ UIImage image
 保存対象のイメージオブジェクトです
■ id completionTarget
 保存が完了した際に呼び出す「completionSelector」に指定されたメソッドを保持するインスタンスを登録します。
■ SEL completionSelector
 保存が完了した際に呼び出す(「completionTarget」が保持する)メソッド
■ void contextInfo
 「completionSelector」に渡す値。何か保存完了時に渡したいデータがあれば指定する。

「completionSelector」は以下のシグニチャーである必要があります。

- (void) image: (UIImage *) image 
didFinishSavingWithError: (NSError *) error 
contextInfo: (void *) contextInfo;


詳細は以下サイトをご確認下さい。
http://developer.apple.com/library/ios/#documentation/uikit/reference/UIKitFunctionReference/Reference/reference.html


■ 最後に
idとかselectorとかvoidとかは、個人的には新しい内容だったので最初は戸惑いましたが、でも最終的にはカンタンに実装できて良かった。フレームワークって便利ですね。