0

UITableView には多数の画像 (幅 600、高さ固定) が表示されており、次のように instagram と同様の視覚効果を実装したいと考えています。

  1. スムーズスクロール

  2. 画像がスクロールして画面に戻る間、「空白から画像」効果はありません

  3. 最小のメモリ コスト

これを行うためにSDWebImageを使用していますが、SDWebImageが画像をダウンロードすると、解凍された画像データがメモリにキャッシュされます。これは、複数回表示するのは高速ですが、大量のメモリを消費します。アプリがメモリ不足の警告を受け取ったとき、SDImageCacheはすべてをフラッシュします画像がキャッシュされ、画像がスクロールして画面に戻ると、「空白から画像」が表示されました。

解凍された画像をキャッシュする代わりに、圧縮された画像をキャッシュするようにいくつかのコードを変更しましたが、新しい問題が発生しました。画像の解凍が遅すぎます。

最後に、滞留は JPEG 解凍が原因であることがわかったので、GPU を使用して JPEG を解凍する必要があると思いますが、これを行う方法がわからないか
、この方法での最適化は完全に間違っています。

4

2 に答える 2

1

また、何を試したのかもわかりません。しかし、私の以前のプロジェクトによると。LazyTableImages私はこのようにしました:最初に遅延読み込みメカニズムを使用します(デモを見ることができます: https://github.com/taufikobet/Fast-LazyTableImages)。表示されている画像のみをダウンロードまたはロードします。別のスレッドを使用して画像をダウンロードする必要があります

2番目に適切なサイズの画像を保存します。画像のサイズを処理し、メインスレッドではなく別のスレッドを使用して画像を保存できます。適切なサイズの画像を保存すると、画像をロードする時間が大幅に節約されます不適切なサイズ。画像をロードすると、imageView が画像のサイズを処理します。

JPEGを保存するとき、圧縮したい場合は以下の方法が使えます。

UIKIT_EXTERN NSData *UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality);  // return image as JPEG. May return nil if image has no CGImageRef or invalid bitmap format. compression is 0(most)..1(least)

それは私の経験です。

于 2013-01-30T08:36:47.247 に答える
0

私は最近、大きな画像 (2000*1000) で多くの作業を行っているため、かなり多くの調査を行いました。

まず、jpeg ファイルを高速にデコードするこの 3 番目の部分の lib: libjpeg-turboについて何かを学ぶことができます。このライブラリを使用する例: link Github

そして、画像の解凍/レンダリングの問題に関する情報を次に示します。link1 link2 を確認してください

于 2013-01-30T13:13:44.057 に答える