android - 减小 .png 文件的大小对内存中的结果位图有一些影响

标签 android png bitmap

我正在编写包含大量 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/

相关文章:

java.lang.NoClassDefFoundError 安卓工作室

java - Android对SD卡的写访问

java - FFMPEG在将tiff图片转换为png时反转颜色

delphi - GDI+ 和 Delphi、PNG 资源、DrawImage、ColorConversion -> 内存不足

java - 谢尔宾斯基三角 java

android - 如何告诉 Android 不要缩放图像?

c++ - Qt 中的锁位。如何实现?

java.lang.NoSuchMethodError 编译

android - 如何使工具栏保持不变 Android

android - 如何将Uri图像压缩为位图