Xcode 内置png压缩效果

Xcode built-in png compression effects

我有一个关于 png-8 与 png-24 用法与 Xcode 内置 "image compressor" 的问题。

一些转换为png-8的图像就这样保存了,因为不容易注意到png-24版本之间的差异。但是有些图像必须存储为 png-24 以便质量保持在高水平......当像 png-8 一样保存时,相同的图像大约小 3 倍,所以我想使用 png- 时内存消耗会有一些好处- 8 对 png-24。但我不确定的是:

我知道让 Xcode 做它应该做的事情可能已经足够了,特别是对于具有足够内存和 cpu 功率的新设备,但我很好奇发生了什么 "under the hood" 在 Photoshop 中进行优化是否浪费时间?

除了 PNG8 和 PNG 24 之间的可用颜色外,主要区别在于透明度方面。

PNG8 alpha 的外观有时会有些锯齿,而 PNG24 则要平滑得多。如果您不关心 alpha 并且图像看起来足够好,那么 PNG8 可能是最佳选择。

PNG8 Alpha

PNG24 Alpha

Xcode使用PngCrush behind the scenes to optimize .png files. Here也是一个很好的博客post可以回答你的问题

  • Does iOS "likes" more png-24?

iOS 当然喜欢它的图像接近它自己的硬件格式(见下文)。但是,它可能不会预设某种格式,或随意转换图像。这意味着默认的后处理可以将图像从调色板(8 位)转换为真彩色图像,如果应用程序希望其图像包含调色板,那将是 破坏性的 。调色板图像有很多好的和正确的用途。

  • Are there any problems with using png-8 instead of png-24 in iOS and what is a preferred choice?

颜色深度 - 对于某些类型的图像(但不是全部),颜色深度越高越好。尺寸 - 越小越好(决定什么时候,你自己)。除了 Sangony 声明之外,PNG 规范足够慷慨,即使在索引模式下也允许多于一位的 alpha。也就是说,通常的 RGB 调色板也可能是 RGBA,包括 alpha。我不知道有任何 "problems" 具有更常见的 PNG 格式,甚至是不常见的格式。

  • What are benefits to optimize image in PS (or some program like TexturePacker) when COMPRESS_PNG_FILES in Xcode is set to YES because I suppose Xcode in some way overwrites our optimization done in PS?

Photoshop 在优化 PNG 方面并不十分,但话又说回来,它肯定不是最差的之一。 pngcrush(原版)专门用于尝试从 PNG 中压缩最后一个字节——但在其最高设置下,这样做确实需要一段时间。我可能在不知不觉中使用了 Apple 修改的 pngcrush,因为它默认为 "on";我在编译代码的时候没有发现这么大的延迟,所以Apple的默认可能不是最高的possible设置。这表明手动 运行 pngcrush 可能值得花时间,在这种情况下,您绝对不希望 XCode 撤消它。

  • What actually Xcode does when optimizing images?

最明显的 'optimizations' 是:将存储顺序从 RGB 切换到 BGR 并通过将其与颜色通道预乘来丢弃 Alpha 通道。另见 my earlier answer

存储顺序大概是默认目标设备(iPad、iPhone)的最佳选择。预乘 alpha 是一种常用的优化方法,因为这样可以减少实时显示图像的计算量。 (它也有一些缺点。)

在没有任何精确测量的情况下,只能推测这些优化对现代硬件是否真的很重要。所有到 'display' 格式的内部转换都可以尽快缓存。