2011/11/29更新

[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;

詳細は以下サイトをご確認下さい。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIKitFunctionReference/Reference/reference.html


■ 最後に

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







こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。