5

我一直想问这个已经有一段时间了。我正在创建这个游戏,我在其中绘制了一个非常大的背景。但问题是(当然),当我在游戏中添加更多元素时,我得到了 OutOfMemory 异常。

我一直想问的是,压缩图像会减少堆大小分配吗?例如,我的 PNG 背景(3000 x 2000 像素)约为 1.5 MB。经过一系列的 PNG 压缩(通过 TinyPNG 和 PNGGauntlet 等软件),背景大小大幅减少到 712 KB。这里的压缩图像仍然与原始大小相同(3000 x 2000)。

原始背景大小 (1.5 MB) 的堆大小分配是否与压缩后的 (712 KB) 相同?

4

1 回答 1

1

答案是肯定的,压缩和未压缩的图像占用相同数量的内存——它们最终只是作为 R,G,B(,A) 值的网格结束。
唯一可以节省一些内存的情况是使用 GPU 直接支持的压缩形式(例如,用于 OpenGL 纹理的 S3TC 压缩)。

压缩减少了两件事:磁盘上的文件大小,以及加载文件所需的 IO 时间量(尽管这种节省可能会被解压缩过程抵消)。

但是,您可以考虑将图像加载到 ARGB_8888 以外的位图类型(例如 RGB_565)——这将减少存储位图所需的内存量(但图像质量会降低)。

于 2013-01-25T14:22:09.007 回答