2

私は、主な機能がテーブルビューに大きな画像を表示するアプリを作成しています。一部の画像は、幅が 1000 ピクセル、サイズが 1MB 以上になる場合があります。

古いデバイス (3GS) では、これらの処理に重大な問題があり、すぐにメモリ警告が送信されることがわかっています。

どんな画像が持ち込まれているのかわかりませんが、サイズもファイルサイズも小さくできると思いました。だから私は調べた

NSData *dataForJPEGFile = UIImageJPEGRepresentation(img, 0.6)

圧縮用ですが、これはメモリ警告には役立たないと思います

次のようにサイズ変更します。

UIImage *newImage;
UIImage *oldImage = [UIImage imageWithData:imageData] ;
UIGraphicsBeginImageContext(CGSizeMake(tempImage.size.width,tempImage.size.height)); 
[oldImage drawInRect:CGRectMake(0, 0,320.0f,heightScaled)];
newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext();

また、https://github.com/AliSoftware/UIImage-Resizeでも

基本的には、画像を取得して再フォーマットし、その場でサイズとファイルサイズを小さくしてから、古いものを削除したいと考えています。これが最善の方法ですか?画像のキャッシュは役に立ちますか? https://github.com/rs/SDWebImageのように?

4

2 に答える 2

0

テーブル ビューの画像はサイズを変更する必要があります。もちろん、小さなフレームに大きな画像を表示するよりも見栄えがよくなります。ストレージに問題があり、必要なときにいつでも大きな画像をダウンロードできるサーバーがある場合は、ファイル システムに何らかのキャッシュを実装できます。そこには最大 n MB のイメージのみを保存し、現在ファイル システムにない新しいイメージが要求されるたびに、最も使用頻度の低い (または何か) を削除して、新しいイメージをダウンロードします。

Ps: 使用しないでください+[UIImage imageNamed:]。キャッシュ アルゴリズムにいくつかのバグがあるか、それを使用して読み込んだ画像を解放しないものがあります。

于 2011-06-23T05:14:43.467 に答える