[XCODE] 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:nil cancelButtonTitle:@"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;
詳細は以下サイトをご確認下さい。
■ 最後に
idとかselectorとかvoidとかは、個人的には新しい内容だったので最初は戸惑いましたが、でも最終的にはカンタンに実装できて良かった。フレームワークって便利ですね。