Png的iOS – png的捆绑vs下载 – png8 vs png24

我正在写一个iOS应用程序,并有一些关于使用PNG和性能的问题,我找不到任何答案。

我的应用程序使用来自2个来源的PNG,一些在应用程序包中,而另外一些则从互联网上下载并存储在本地。 应用程序包中的那些我有我的脑袋,我知道当应用程序编译(字节交换和预乘Alpha)时,xCode优化它们的iOS。 我有关于png从互联网下载的以下问题。

1)如果下载的图像和捆绑包中的图像,你仍然可以从iOS中使用PNG获得性能优势。 xCode优化是否可以以某种方式应用于下载的图像?

2)除了文件大小,使用png8 vs png24还有什么优点(或缺点)吗? 从本地文件扩展时,它们是否占用较less的内存? 扩展它们是否花费较less的努力? animation有什么性能提升吗? 还是从更小的文件大小和更好的下载时间的唯一收益?

在此先感谢您的任何答案。

保罗

  1. PNG优化是由苹果自己的pngcrush版本完成的(尽pipe它的作者说

    […] 2.更改后的版本必须明确标记,不得歪曲为原始二进制文件或源文件。 ( http://optimate.dl.sourceforge.net/project/pmt/pngcrush/1.7.70/pngcrush-1.7.70-HELP.txt

    – 但苹果不在乎这些细节)。 在编译源代码时, pngcrush会调用pngcrush 。 编译完成后,XCode与以后下载的图像无关。 但是,你可以申请苹果公司的pngcrush来“优化”新的图像上传之前。 在我看来,这是否值得这个努力值得怀疑。

  2. 这取决于连续四次。 (如果我的计数正确)。8位PNG比24位PNG小3倍。 使用单个字节而不是3或4(RGB,RGBA) 应该更快; 自然它使用更less的内存。 它主要(或可能仅)取决于您的图像的内容。 使用PNG的algorithm,图像压缩严重,并且在以8位色彩索引模式保存时会受到色彩量化的影响。 一个典型的“计算机”图像 – 比方说一个文本编辑器的快照 – 具有相同颜色的大面积区域可能会非常快地解压缩。

如果您打算使用8位PNG,则不会使用Apple修改后的版本所应用的“优化”。 它的主要修改是重新排列RGB(A),大概是为了对准iPhone / iPad的显示。 (其次要目的似乎是使图像无效为有效的PNG。)

当你把它们放到bundle中,并打开Xcode中的“compress png”选项时,Xcode会重新格式化这些png,使它们更快地加载(但通常比原来的大,在这个行为上有很multithreading)。

如果您真的好奇,请查看应用程序的构build文件夹,然后检查修改的png。 您将看到的选项是当前针对iOS的最佳选项。 事实上,我依稀记起一个线索,讨论你需要提供什么样的选项来提供给一些图像转换程序(如ImageMagik)来模仿iOS正在做什么(但我现在找不到它)。

编辑:作为Jongware(其他答案)build议,它会出现Xcode使用pngcrush的修改版本。 指向评估这些图片选项的人的链接 。