2009-07-19 6 views
12

私のアプリがしばらくしてからクラッシュしているので、私は非常に大きなサイズの画像をUITableViewに表示しています。今私は、イメージのサイズを変更し、ディスクに保存したい。 NSData/UIImageからイメージのサイズを変更し、ディスクに保存して保存することができます。iPhoneのUIImageから画像をサンドボックスに保存する

私はUIImageからイメージのサイズを変更するコードを得ました。その結果、私はUIImageオブジェクトのイメージに自分のサイズを変更しました。どのようにiphoneのサンドボックスに保存するのですか?

おかげで、

答えて

4

あなたは右の「私は、ファイルを書くのですか」求めていますか?

おそらくライブラリ/キャッシュディレクトリに書き込もうとしているので、電話がバックアップされたときにそれらのファイルを保存しないでください。

アプリフォルダのルートをNSHomeDirectory()とし、ライブラリ/キャッシュを追加します。

NSDataのfs w/aメソッドにNSDataを書き込むことができます。 UIImageをお持ちの場合は、UIImageJPEGRepresentation()またはUIImagePNGRepresentationを入力してデータを取得できます。

+6

。 NSString * cachesDirectory = [パスobjectAtIndex:0]; 自分で 'ライブラリ/キャッシュ'を追加するのではなく、 –

1

NSData *imgData = UIImageJPEGRepresentation(image, 1);

CGImageSourceRef source = CGImageSourceCreateWithData((CFMutableDataRef)imgData, NULL); 
NSDictionary *metadata = [(NSDictionary *) CGImageSourceCopyPropertiesAtIndex(source,0,NULL)autorelease]; 
NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Test.jpg"]; 
[imageMutableData writeToFile:jpgPath atomically:YES]; 

これは、名前Test.jpgとサンドボックス内のドキュメントのフォルダに画像をコピーします。

あなたはここでUIImagePNGRepresentation(image);

30

を試すことができますが、PNGのためにそれをしたい場合は、コードを作業からであるiOSのDocumentsディレクトリに保存するためのコードです。あなたはおそらく にNSArray *パス= NSSearchPathForDirectoriesInDomains(NSCachesDirectory、NSUserDomainMask、YES)を使用したい

// Convert UIImage to JPEG 
NSData *imgData = UIImageJPEGRepresentation(image, 1); // 1 is compression quality 

// Identify the home directory and file name  
NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Test.jpg"]; 

// Write the file. Choose YES atomically to enforce an all or none write. Use the NO flag if partially written files are okay which can occur in cases of corruption 
[imgData writeToFile:jpgPath atomically:YES]; 
+0

恐ろしい答え、それは私を助けた。そのデータに再びアクセスするのは簡単です(1行のコード)?あるいは、スタック上で別の質問をする必要がありますか? – KKendall

+1

@KKendallあなたは '[NSData dataWithContentsOfFile:]'や '[UIImage imageWithContentsOfFile:]'をちょうど実行できます。 – Liron

+1

JPEGはロッシーなフォーマットなので、代わりにUIImagePNGRepresentationを使うことをお勧めします。ディスクへのイメージの書き込み/読み取りを繰り返し行うと、問題が発生します。 – user1021430

関連する問題