PNGは透明ピクセルがメモリを占有しますか?

私はAndroid用のゲームを作っています。透明なPNGを使用しています。しかし、透明部分は大きなメモリを占有していますか?

たとえば、透明な 512 PNGがある場合、同じ量の RAM および ROM を1つは 256 * 246 となります。

//サイモン

2
ディスク上のkbよりもRAMを増やす
追加された 著者 AndroidXTr3meN,
それぞれを作成してサイズを比較するだけではありませんか?
追加された 著者 Oliver Charlesworth,

2 答え

サイズは、メモリに圧縮されていないときのピクチャの解像度に完全に依存します。

透明なピクセル(アルファチャンネル)を使用している場合、画像フォーマットとして ARGB8888 を使用する可能性が最も高いです。これにより、各ピクセルは4バイトのメモリを要する。つまり、512x512ピクセルイメージは、(512 * 512 * 4)バイト= 1 MB (256 * 246 * 4)バイト= 246 kB

ピクセルが透明な場合は(不可視)しても問題はありません。解像度と内部形式のみが関連します。

6
追加された
大丈夫です、私はメモリがRAMと同じであると思いますか?
追加された 著者 AndroidXTr3meN,
@ AndroidXTr3meNはい、この場合はmemory = RAMです。
追加された 著者 user658042,

イメージがメモリにロードされると、ディスク上の元のフォーマットが何であってもビットマップになるので、本当に設定画像を読み込みます。
画像を ARGB_8888 として読み込むと、画像の各ピクセルのすべての色成分が1バイトを占めます。つまり、アルファ(透明度)が画像メモリの4分の1を占める、すべてのピクセルは4バイトになります。

  • An image that is 512x512 pixels with transparency will take about 1048 kB memory.
  • Without transparency it will be 786kB.
  • There isn't any RGB_888 colormode, the closest is RGB_565, which would be 524kB.
4
追加された