“是否需要支付大量罚金?”;标准;iPhone上的PNG?

“是否需要支付大量罚金?”;标准;iPhone上的PNG?,iphone,Iphone,如果我使用未优化的PNG作为我的Default.PNG图像,我将在启动性能中为此支付多少费用?我意识到当PNG被复制到.app包中时,Xcode会对其进行优化,但我会执行一些构建时脚本编写,并最终得到常规PNG。似乎运行良好,但我想确定一下。我认为Xcode,以及其他一些东西(详见下文),优化了PNG,使其尽可能小。这可能是通过互联网上免费提供的两个程序的组合来实现的:和 这两个程序都会查看PNG文件,并查看如何使PNG变小;以不同方式生成的PNG文件(如使用Microsoft paint)效果

如果我使用未优化的PNG作为我的Default.PNG图像,我将在启动性能中为此支付多少费用?我意识到当PNG被复制到.app包中时,Xcode会对其进行优化,但我会执行一些构建时脚本编写,并最终得到常规PNG。似乎运行良好,但我想确定一下。

我认为Xcode,以及其他一些东西(详见下文),优化了PNG,使其尽可能小。这可能是通过互联网上免费提供的两个程序的组合来实现的:和

这两个程序都会查看PNG文件,并查看如何使PNG变小;以不同方式生成的PNG文件(如使用Microsoft paint)效果很好(但请参见下面的iPhone特定问题),但要大一点。PNG最初创建于20世纪90年代中期,当时顶级奔腾的性能甚至只有最慢的iPhone的一小部分;它们总是加载得相当快(除非它们是真正巨大的图像)

谷歌是你的朋友:一个简单的“xcode PNG优化”谷歌搜索揭示了这一点,因此PNG在最终应用程序中可能看起来有点不同

此外,从该博客条目:

当您使用任何其他文件类型(或加载未优化的PNG文件)时,您的iPhone必须在加载时执行字节交换和alpha预乘法(并可能在显示时重新执行alpha乘法)。您的应用程序基本上必须执行与Xcode相同的处理,但它是在运行时而不是在构建时执行的。这将使您在处理器周期和内存开销方面付出代价


所以,是的,对最终用户接触的任何东西都使用xcode优化,但对于开发人员和SQA测试人员来说,另一种构建很好。

运行时的惩罚是它将字节顺序从RGBA交换到BGRA,并在所有像素上预乘alpha


如果您担心的只是Default.png,那么性能问题就不是很明显了。另一方面,如果要加载大量png文件,最好提前处理这些文件,然后允许XCode在复制文件构建阶段对其进行优化。

为什么不在复制到捆绑包中的图像上运行相同的pngcrush XCode?当然,这不会对性能造成巨大影响,但优化应用程序启动时间是您可以做的最有价值的事情之一。

我找到了各种描述编译器正在做什么的文章,但我更感兴趣的是实际的性能成本。感谢您的深入回复!这大概也是我的想法所在。谢谢啊,太好了。这确实可能是一条路要走;没有意识到这只是一个命令行工具。谢谢这绝对是一条路要走。再次感谢!