1

たくさんの画像を表示するアプリケーションがあります。画像は、デバイスの全画面サイズまでさまざまなサイズにすることができます。画像はすべてダウンロードされます。imagemagickを使用して画像の色を減らし、ファイルサイズを圧縮し、サイズを同じに保ち、ダウンロード時間を短縮します。縮小された色空間は、私のアプリケーションには問題ありません。

問題は、Androidのビットマップに画像をロードすると、ARGB_8888のAndroidのビットマップ構成のためにファイルサイズがはるかに大きくなることです。アルファチャネルが必要です。ARGB_4444は非推奨であり、パフォーマンスの問題があったため、私はそれを使用していません。寸法を元のビットと同じに保ちながら、ロードされたビットマップのメモリフットプリントを削減する他の方法があるかどうか疑問に思っていますか?

- - アップデート - -

ここでの議論や他の多くの検索/読み取りの後、これを行う簡単な方法があるようには見えません。各ピクセルを1ピクセルあたり4バイトではなく、2バイトとして格納するARGB_4444を使用できます。問題は、ARGB_4444が非推奨になっていることです。明らかな理由で、APIの非推奨部分を使用しないようにしています。アルファが必要なため、AndroidではデフォルトのARGB_8888を使用することをお勧めします。これを使用する必要があります。このような複雑な色空間を必要としないアプリケーションはたくさんあるので、ARGB_4444などがサポートされているAPIの一部になるのを見るといいでしょう。

4

2 に答える 2

4

アルファ(透明度)が必要ない場合は、次を使用できます。

Bitmap.Config.RGB_565

ピクセルあたり 4 バイトではなく 2 バイトを使用するため、サイズが半分になります。

以下も参照してBitmapFactory.Optionsください。

inSampleSize
inScaled

要件に合わせてこれらの値を正しく設定すると、ビットマップのメモリ要件に非常に良い影響を与える可能性があります。

よろしく。

于 2012-12-02T20:45:11.233 に答える
0

ここに投稿した同様の回答を読んでください

基本的に、プレ ハニカム デバイスではメモリ使用量を削減するためにビットマップ リサイクルが必要です。

于 2012-12-02T20:58:48.657 に答える