2011/11/20更新

[XCODE] iPhoneで画像をアプリケーション内に保存するには

このエントリーをはてなブックマークに追加      

こんにちは、@yoheiMuneです。
今日は、iPhoneアプリケーションで、自身のアプリ内にユーザー画像を保存する方法をブログに記載したいと思います。
画像




アプリケーション内に画像を保存する

ユーザーにアルバムから選んでもらった画像を、後々使いたいので、アプリ内に保存したい時もあるかと思います。
そんな際に、保存するには、以下のようにすると実現出来ます。
// 例えば、カメラやアルバムから選んでもらった画像を扱います
- (void) imagePickerController:(UIImagePickerController *)picker 
 didFinishPickingMediaWithInfo:(NSDictionary *)info {

  // ユーザーの選んだ(または撮影した)画像を取得します
  UIImage *aImage = [info objectForKey:UIImagePickerControllerOriginalImage];

  // JPEGのデータとしてNSDataを作成します
  // ここのUIImageJPEGRepresentationがミソです
  NSData *data = UIImageJPEGRepresentation(aImage, 0.8f);

  // 保存するディレクトリを指定します
  // ここではデータを保存する為に一般的に使われるDocumentsディレクトリ
  NSString *path = [NSStringstringWithFormat:@"%@/sample.jpg",
    [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]];


   // NSDataのwriteToFileメソッドを使ってファイルに書き込みます
   // atomically=YESの場合、同名のファイルがあったら、まずは別名で作成して、その後、ファイルの上書きを行います
   if ([data writeToFile:path atomically:YES]) {
      NSLog(@"save OK");
  } else {
      NSLog(@"save NG");
  }
}

ここでは、UIImageJPEGRepresentationという関数を使って、NSDataを作るところがポイントです。
UIImagePNGRepresentation(<#UIImage *image#>)という関数を使う事で、PNGファイルも作成可能です。
NSDataを作成する為の関数さえ使えれば、後は簡単カンタン(*´∇`*)




参考資料

以下を参考にしました。ありがとうございます。
・UIImageの使い方
http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImage_Class/Reference/Reference.html
・UIImageJPEGRepresentationとUIImagePNGRepresentationの使い方
http://developer.apple.com/library/ios/#documentation/uikit/reference/UIKitFunctionReference/Reference/reference.html#//apple_ref/c/func/UIImagePNGRepresentation




最後に

調べる当初はやり方の検討も付かないですが、同じ事でハマっている人はたくさん居るんですね。心強いです(`・ω・´)
今後も、自分のつまづいた点はブログに残して行ければ良いな。






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

RSS画像

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