我有一个背景文件,希望在当前 40mb 的 iphone 游戏中使用。这是一个 .png 文件,我想将其压缩到尽可能小的尺寸,而不会损失太多质量并且不会丢失 alpha 通道。只需将文件类型更改为 .jpg 文件,我就成功地更改了类似大文件的文件大小。但是,此图像没有任何透明度,据我所知,您无法将 .png 更改为 .jpg 而不会失去透明度。然而,也许我错了(如果我错了,请纠正我。)如果有办法压缩这个 .png 文件,请向我解释它是如何完成的。另外,请注意,这是一个相当大的文件,如果可能,最好在 5 小时或以下的时间范围内进行压缩。谢谢!
3 回答
你是如何构建游戏的?如果您直接使用 OpenGL,并且对它提供的压缩感到满意,那么 PVR 是一种非常棒的格式,适用于更小且非常快速的图像。
正如 keegan3d 所说,Xcode 使用 PNGCrush 重新压缩 PNG 图像。它更改字节顺序并预乘 alpha。这篇文章解释了会发生什么:iPhone“优化”PNG
如果您启用 Xcode 的 PNG 压缩,那么您将看不到使用 PNG 压缩工具的任何好处:PNG 压缩和 iOS 应用程序
如果您只想禁用 Xcode 对一张图像的压缩(以便您可以使用备用压缩工具),我相信您可以将文件类型从 更改image.png
为file
,如下所述:如何跳过压缩一个 PNG?
并且...请注意 RAM 的使用。JPEG 和 PNG 都将解压缩到相同的大小(假设它们没有 alpha)。40MB 相当大。你有其他绘制背景的方法吗?我曾开发过基于位图的位图 2048 x 2048 游戏区域的游戏。我们使用 PVR 和瓷砖。PVR 图像使用的 RAM 比 PNG 少,而且速度更快。
Xcode 压缩 pngs,你应该看看图像在构建的应用程序中的实际大小。使用ImageOptim可以比 Xcode 更多地压缩图像,但它们在屏幕上显示的速度稍慢,这对于您的背景图像可能不是问题。
在我的基准测试中,最小尺寸和最快加载 PNG 图像是使用ImageAlpha / pngquant创建的 PNG8+alpha 。
如果您的背景大多是平坦的或单色的(没有太多模糊/渐变),那么它看起来像 PNG8+alpha 一样好。
您可以通过巧妙的方式对 PNG24+alpha 图像进行分色来提高它们的可压缩性。
但是,40MB 的 PNG 图像仍然很大。如果它导致您的记忆问题,我不会感到惊讶。考虑将其拆分为较小的图块。