お絵描き系のアプリを作成していて画像データを写真ライブラリに保存する方法を調べたのでメモ。

一番簡単な方法は

  • メニューなどを消した状態にする
  • スクリーンショットを撮る
  • 保存する


メニューなどを消して保存したい画像データだけにするのはそれぞれのアプリによって違うので省略。ステータスバーも消さないとダメですね。ステータスバーを消す方法は昨日書いたエントリを参照。

スクリーンショットを撮るのは下記のコードで撮れます。

UIImage *image = [UIImage imageWithCGImage:UIGetScreenImage()];

UIImage データを保存するには下記の関数で保存できます。

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

保存した後に何か処理したい場合、completionTarget にターゲット、completionSelector にアクションを指定します。特に処理しない場合は UIImage 以外は nil でも大丈夫です。

で、結果的に下記のコードでスクリーンショットを撮って、写真ライブラリに保存できます。

UIImageWriteToSavedPhotosAlbum([UIImage imageWithCGImage:UIGetScreenImage()], nil, nil, nil);

欠点は等倍の画像データにしか対応できないことです。

関連する投稿