4

これは、システム (具体的には Web ブラウザー) が圧縮された画像を処理する方法に関する、一種の構造的/概念的な問題です。

iPad でスワイプできるページに 11 個の 1920x1080 の画像がある "画像ギャラリー" Web アプリを扱っています。非常に遅いことがわかりました.iPadがメモリとページに同時に非常に多くの大きな画像を持つことに問題があるためだとほぼ確信しています.

画像をさらに圧縮することを提案する人もいます。それらは現在PNGであり、JPGに再圧縮したいと考えています。明らかにファイルサイズは小さくなりますが、iPad(およびその他)に圧縮画像を画面に直接レンダリングする方法(フレームバッファ)がない限り、レンダリングする前に画像をメモリに解凍する必要があると思います. その場合、圧縮はレンダリングのパフォーマンスに影響を与えないようです。(それらを「さらに」解凍するわずかな処理能力の追加を除いて。)

私の理解と仮定は正しいですか?画像のサイズを変更したり、再圧縮したりする必要がありますか?

ありがとう

詳細情報 - 「ええ、圧縮された画像は小さいです」と言う前にこれを読んでください - 私は開発者であり、ユーザーではありません:

より少ないスペースを使用することは、より少ないメモリを使用することと同じではありません。ストレージに問題はありませんが、レンダリングのパフォーマンスに問題があります。コードは単純で、1 つの div と次の div の間でアニメーション化してギャラリーに「スワイプ」効果を与えるだけです。

方程式から画像を削除すると、パフォーマンスは良好です。したがって、ボトルネックはコードではなく画像であると確信しています。

尋ねられている質問は、他の人がパフォーマンスを向上させるために画像をさらに圧縮したいため、「圧縮によって画像のメモリ使用量が少なくなるか」です。ただし、圧縮のアーキテクチャを理解している限り、それを使用するにはメモリ内の元のサイズに解凍する必要があるため、圧縮はメモリの使用に影響しません。保管と送信のみ。

4

2 に答える 2

3

画像を圧縮すると、画像が使用するメモリが少なくなりますか?

いいえ、たとえばモニターに表示される場合、画像は同じ量のメモリ(残念ながらピクセル)を使用します。

圧縮は画像のコンテナー (通常はファイルまたは一時メモリ バッファー) に適用されますが、画面上では同じものが使用されます。

これは、表示する各ピクセルを割り当てる必要があるためです。

24 ビットの 1920x1080 画像の場合、1920 x 1080 x 3 バイト (RGB の各カラー コンポーネントに 1 バイト -> 1 バイト = 8 ビット)、または 6,220,800 バイト (約 6 MB) を使用します。

再圧縮する必要がありますか?

表示時にメモリ内のスペースが少なくて済むわけではありませんが、メモリへのロードが高速になる可能性があります。しかし、それはそれについてです。

ここで、アプリケーションは、画像を表示するときにのみ解凍するか (遅延の原因になります)、すべてを解凍して即座に表示できるようにするかを決定する必要があります。この決定はアプリケーションに基づいているため、特定のアプリケーションを確認する必要があります。

于 2012-11-13T00:35:03.047 に答える
0

具体的に iOS について話すことはできませんが、最適な方法は解凍を GPU にオフロードすることです。これには、かなり複雑なアーキテクチャ上の作業が必要です。したがって、より高い圧縮率を使用しても実際にアプリケーションのパフォーマンスが向上する可能性は低いと思います。

ただし、画像を小さなタイルに分割することは、試してみることをお勧めする一般的な解決策です。

于 2012-11-13T00:35:46.960 に答える