我一直想问这个问题已经有一段时间了。我正在创建这个游戏,我绘制了一个非常大的背景。但问题是(当然),当我把更多的元素添加到游戏中时,我得到一个OutOfMemory异常。
我要问的是,压缩图像会减少堆大小分配吗?例如,我的PNG背景(3000 x 2000像素)大约是1.5 MB。经过一系列PNG压缩(通过TinyPNG和PNGGauntlet等软件)后,背景大小急剧减少到712 KB。此处的压缩图像仍然与原始图像相同(3000 x 2000)。
原始背景大小(1.5 MB)的堆大小分配是否与压缩(712 KB)相同?
答案 0 :(得分:1)
答案是肯定的,压缩和未压缩的图像都占用相同的内存量 - 它们最终只是作为R,G,B(,A)值的网格结束。
唯一可以的时间如果您正在使用GPU直接支持的压缩形式(例如,对OpenGL纹理进行S3TC压缩),请保存一些内存。
压缩减少了两件事:磁盘上的文件大小和加载文件所需的IO时间量(虽然这种节省可能会被解压缩过程所抵消)。
然而,您可以将图像加载到ARGB_8888以外的位图类型(例如RGB_565) - 这将减少存储位图所需的内存量(但图像质量会降低)。