17

SD カードに 2448x3264 の画像があり、1,667,072 バイトを消費しますが、それをビットマップとして読み込んで を使​​用してそのサイズを計算すると、getRowBytes()*getHeight()最終的に 15,980,544 バイトになります。

なぜこれが起こるのですか? また、ファイルの実際のサイズを計算するにはどうすればよいですか?

4

1 に答える 1

41

これは、イメージがディスク上にあるときに圧縮されるためです (JPG、PNG、または同様の形式で保存されます)。画像をメモリにロードすると、画像は圧縮されなくなり、すべてのピクセルに必要なだけのメモリを占有します (通常、RGBA_8888 の場合は幅 * 高さ * 4、RGB_565 の場合は幅 * 高さ * 2)。

于 2012-07-12T21:41:24.090 に答える