12

UITableView で非常に大きなサイズの画像を表示しています。このため、しばらくするとアプリがクラッシュします。次に、画像のサイズを変更してディスクに保存します。NSData/UIImage から画像のサイズを変更し、ディスクに保存するのを手伝ってくれる人がいますか。

UIImage から画像のサイズを変更するコードを取得したので、その結果、UIImage オブジェクトで画像のサイズを変更し、iPhone サンドボックスに保存する方法を説明しました。

ありがとう、

4

3 に答える 3

30

これは、動作中のコードからiOSのDocumentsディレクトリに保存するコードです。

// 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]; 
于 2012-03-19T06:44:24.373 に答える
4

あなたは「どうやってファイルを書くのですか」と尋ねていますよね?

おそらく Library/Caches ディレクトリに書き込みたいと思うので、電話がバックアップされたときにそれらのファイルを保存しないという点で少し複雑だと思います。

app フォルダーのルートを取得し、NSHomeDirectory()Library/Caches を追加します。

NSData のメソッドを使用して、NSData を fs に書き込むことができます。UIImage がある場合は、データを取得しUIImageJPEGRepresentation()たり実行したりUIImagePNGRepresentationできます。

于 2009-07-19T22:59:04.727 に答える
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];

イメージをサンドボックス内のドキュメント フォルダに name でコピーしますTest.jpg

PNGでやりたい場合は、試すことができますUIImagePNGRepresentation(image);

于 2011-09-27T11:31:31.820 に答える