我正在编写包含大量 PNG 图片的游戏。一切正常。比我使用 WebView
添加新 Activity 并出现内存不足。之后我做了一些实验——用完全填充了一些颜色的图像替换游戏 PNG 图像。结果内存短缺已经消失。
但我想 Bitmap
在内部分别保存每个像素,所以这样的更改应该没有效果。也许这是因为初始图像有 alpha channel 而我的测试图像没有?
但实际上问题是:减小 PNG 图像文件的大小是否会对减少 VM 应用程序堆的使用产生一些影响?
最佳答案
您应该查看要将图像解码成的位图配置。我不知道配置文件的具体含义,但是例如,您可以解码为 ARGB_8888 或简单地解码为 RGB_565。 RGB_565 使用较少的内存,大概是因为它没有 alpha(透明) channel 并且每种颜色使用较少的位。在您的情况下,可能发生的情况是简单图像被解码为 RGB_565,而更复杂的图像被解码为 ARGB_8888。
更改正在使用的配置的方法是在图像文件的解码过程中,如下所示:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.RGB_565;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon, options);
试验一下,看看它是否有帮助。这样做肯定对我的比赛有帮助。
关于android - 减小 .png 文件的大小对内存中的结果位图有一些影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2602282/