カメラの利用

Tatsuro Ueda edited this page Mar 13, 2014 · 2 revisions

UIImagePickerControllerのsouceTypeプロパティにUIImagePickerControllerSourceTypeCameraを指定することで、カメラを起動して写真撮影をさせることができる。

撮影した写真の取得方法は、写真アルバムから写真を選択した場合と全く同じである。以下は、撮影した写真(UIImage)を写真アルバムに保存するサンプルコードである。

- (void) imagePickerController:(UIImagePickerController*)picker
 didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage* image = info[UIImagePickerControllerEditedImage];
    if ( !image ) {
        image = info[UIImagePickerControllerOriginalImage];
    }
    // 写真アルバムに保存
    UIImageWriteToSavedPhotosAlbum( image,
                                    self,
                                    @selector(image:didFinishSavingWithErorr:contextInfo:),
                                    NULL );
    [self dismissViewControllerAnimated:YES completion:nil];
}

// 写真の保存が完了(もしくは失敗)した場合に呼ばれる
- (void) image:(UIImage*)
didFinishSavingWithError:(NSError*)error contextInfo:(void*)contextInfo
{
    if ( error )
    {
        // errorがnilでない場合は保存失敗
        NSLog(@"%@", [error localizedDescription]);
    }
    else
    {
        // nilなら保存成功
    }
}

撮影した写真を写真アルバムに保存するには、UIImageWriteToSavedPhotosAlbum関数を使えばよい。

  • 第1引数:取得したUIImageのインスタンス
  • 第2引数:保存の完了(失敗)の通知を受けるレシーバ
  • 第3引数:通知を受けるときに呼ばれるメソッド
  • 第4引数:通知を受ける際に渡されるポインタ

通知を受けるためのメソッドは上記サンプルと同じ形式でないとならないことに注意。 通知を受けたら、引数errorがnilかどうかを確認し、nilなら写真の保存が完了、nil以外なら保存に失敗したという判別ができる。