- 2008-12-04 (木) 14:18
- iPhone SDK / Cocoa / Objective-C
UIViewの中身を画像ファイルとして写真アルバムに保存するには下記のような感じでいけるのですが、これだとどうも画質がいまいちです。
UIViewスクリーンショットをライブラリに保存する方法 - まひるのiPhoneラボ - iPhoneアプリ開発グループ
Jpegの圧縮率は UIImageWriteToSavedPhotosAlbum が勝手に決めてしまっていて、自分で指定することはできません。それならばと自力で処理する方法を探してはみたのですが、写真アルバムにファイルを保存することができません。これは、セキュリティへの配慮により、アプリケーションが読み書きできるのは Application Home 以下のファイルに限られているためです。UIImageWriteToSavedPhotosAlbum はあくまでも例外ということですね。
Application Home 以下でよければ、下記のような感じで最高画質で保存できるのですが……。
NSData *imageData = UIImageJPEGRepresentation(UIGraphicsGetImageFromCurrentImageContext(), 1.0); NSString *filePath = [NSString stringWithFormat:@"%@%@" ,NSHomeDirectory() , @"/Documents/hoge.jpg"]; [imageData writeToFile:filePath atomically:YES];
(追記)NSHomeDirectory()には直接ファイルを書き込めないので、Documentsディレクトリに保存するようサンプルコードを修正しました。それと、ファイルパスの文字列を作るには stringByAppendingPathComponent: などという便利なメソッドがあるのでこちらを使った方が良いようです。
関連する投稿
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://iphone-dev.ensites.net/archives/232/trackback
- Listed below are links to weblogs that reference
- UIViewのスクリーンショットの画質を良くしたい from iPhoneアプリ開発ブログ