【问题标题】:Is there much of a penalty to be paid for "standard" PNGs on iPhone?iPhone 上的“标准”PNG 是否需要支付很多罚款?
【发布时间】:2010-08-02 11:57:00
【问题描述】:

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

【问题讨论】:

    标签: iphone


    【解决方案1】:

    我认为 Xcode 会优化 PNG 以使其尽可能小。这可能是通过互联网上免费提供的两个程序的组合来完成的:PNGcrushAdvanceCOMP

    这两个程序都会查看 PNG 文件,看看可以做些什么来使 PNG 变小;以不同方式生成的 PNG 文件(例如使用 Microsoft 绘制)可以正常工作(但请参阅下面的 iPhone 特定问题),但要大一些。 PNG 最初是在 1990 年代中期创建的,当时顶级的 Pentium 的性能甚至是最慢的 iPhone 的一小部分。它们总是会很快加载(除非它们是非常大的图像)。

    Google 是你的朋友:一个简单的“xcode PNG 优化”Google 搜索显示 one person points out that iPhone’s PNG optimization affects the alpha component,因此 PNG 在最终应用程序中可能看起来有点不同。

    另外,来自该博客条目:

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

    所以,是的,对最终用户接触的任何东西都使用 xcode 优化,但其他构建对于开发人员和 SQA 测试人员来说都可以查看。

    【讨论】:

    • 我发现了各种描述编译器在做什么的文章,但我对现实世界的性能成本更感兴趣。感谢您的深入回复!
    【解决方案2】:

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

    【讨论】:

    • 啊,完美。这可能确实是要走的路;没有意识到这只是一个命令行工具。谢谢!
    • 这绝对是要走的路。再次感谢!
    【解决方案3】:

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

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

    【讨论】:

    • 这也是我的大致想法。谢谢!
    猜你喜欢
    • 2015-01-02
    • 2013-05-25
    • 1970-01-01
    • 2017-06-03
    • 2012-05-23
    • 2011-03-27
    • 2014-08-23
    • 2022-01-05
    • 2019-05-05
    相关资源
    最近更新 更多