Is decreasing size of .png files have some effect to resulted Bitmap in memory

后端 未结 3 613
名媛妹妹
名媛妹妹 2021-01-19 21:57

I\'m writing game with a large amount of PNG pictures. All worked fine. Than I added new activity with WebView and got memory shortage. After that I made some e

相关标签:
3条回答
  • 2021-01-19 22:06

    Memory usage of a Bitmap object in Android is related to the image resolution, not the original format (jpg, png, etc...) or filesize. It needs about 3 bytes pr pixel (1 byte pr color channel).

    Anyway, if you are using BitmapFactory to decode a image, a smaller source-file requires less memory when decoding the inputstream.

    You can test this yourself by using the Dalvik debugger (ddms). Goto the Sysinfo tab an select Memory usage from the dropdown. You will see how much memory your app i using.

    0 讨论(0)
  • 2021-01-19 22:13

    You should look into the bitmap configuration you're decoding your images into. I don't know specifically what the configuration files mean, but for example, you can decode into ARGB_8888 or simply RGB_565. RGB_565 uses less memory, presumably because it doesn't have an alpha (transparency) channel and uses less bits for each colour. In your case what's problably happening is that the simple images are being decoded into RGB_565 whereas the more complicated ones were decoded into ARGB_8888.

    The way to change which configuration is being used is during the decoding of your image files, as follows:

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inPreferredConfig = Bitmap.Config.RGB_565;
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon, options);
    

    Experiment with that and see if it helps. Doing that certainly helped me with my game.

    0 讨论(0)
  • Android or not, a bitmaps in memory aren't compressed, so they are going to take (bits per pixel) * width * height, with a bit of variation depending on the pixel format.

    I don't know the details of how PNGs are drawn, but probably what's happening is that simpler PNGs take less memory to decode.

    0 讨论(0)
提交回复
热议问题