【发布时间】:2008-10-07 03:45:37
【问题描述】:
是否可以将 iPhone Xcode 项目设置为跳过“CompressResources”构建步骤?
具体来说,我想跳过它在我的所有 .png 文件上运行 pngcrush 的阶段,其中许多文件无法以我的应用程序可以读取的形式存在。
编辑:使用的 pngcrush 版本创建的 png 文件包含非标准的“强制、私有”块,该块明确阻止解码。我已经修改了我的 png 阅读器来处理这些文件,但我仍然想要跳过这一步的每个项目的方法。 pngcrush 的其他副作用之一是它不保存透明像素的颜色值,因此 alpha-ed 纹理在较小的 mip 级别显示边缘。
这里描述了 iphone png 格式:https://web.archive.org/web/20110519164905/http://modmyi.com/wiki/index.php/Iphone_PNG_images。总之,
- 跳过 CgBI 块
- 跳过 zlib 标头
- 将 BGR 交换为 RGB 通道顺序
编辑:它似乎也预乘了 alpha,所以:
- 除以 alpha
【问题讨论】:
-
如果有人对 Xcode 为何尝试优化 PNG 以及它究竟做了什么感兴趣,Jeff Lamarche 写了一个很棒的解释。除了解释为什么字节交换和预乘 alpha 通道有帮助之外,他还谈到了当您使用除 PNG 之外的其他图像格式时会发生什么。 iphonedevelopment.blogspot.com/2008/10/…
-
在我的测试中,我发现预乘发生在 Core Graphics 加载函数中。在 Xcode 中禁用压缩没有任何效果。
-
我已经用 archive.org 的链接更新了 wiki 的链接,但请注意,它显然也可以在 wiki.onakasuita.org/pukiwiki/?PNG 获得日文版
标签: iphone xcode image resources