【问题标题】:PNG optimization issue using pngcrush tool使用 pngcrush 工具的 PNG 优化问题
【发布时间】:2011-11-15 08:14:20
【问题描述】:

我对“pngcrush”工具的查询很少。

在 xcode 构建过程中,

  1. 我将选项“压缩 PNG 文件”设置为“是”,然后检查二进制和图像大小。
  2. 然后在我的另一个构建过程中,我将选项“压缩 PNG 文件”设置为“否”,然后再次检查二进制文件和图像大小。

但是,1. 和 2. 在二进制/图像大小方面没有任何区别。

为什么“pngcrush”工具没有优化png文件?

任何帮助都会很棒。

提前致谢。

问候, 德文德拉

【问题讨论】:

    标签: xcode pngcrush


    【解决方案1】:

    pngcrush 工具由 Xcode 构建过程在将 .png 复制到应用程序包中的目标位置时运行。当您将“压缩 PNG 文件”选项设置为“是”时,此过程会在您的 .png 文件上运行。 (请注意,此工具有时会增加图像的大小!)如果在它们上运行 pngcrush,我不希望 .png 图像的大小相同。

    pngcrush 进程也会破坏 .png,使其只能由 iOS 打开。因此,如果您无法在应用程序包中查看图像,则表明 pngcrush 实际上已在其上运行。

    要记住的另一件事;有时 build 文件夹中的应用程序包的内容不会直接与 Xcode 项目中的文件对应。因此,有时手动清理构建文件夹是个好主意。

    【讨论】:

      【解决方案2】:

      只有在为设备构建应用程序时才会转换文件。 iOS 模拟器获取常规 PNG。

      但是,Xcode's conversion can make images larger and slower to load,所以我建议禁用 Compress PNG Files 选项并手动优化 PNG 图像。

      【讨论】:

      • 对于 iPad 上的启动图像,不压缩可能会导致 iOS 消耗更多周期,将图像转换为位图。我的意见是保留它,因为它默认为 YES,并假设 Apple 知道他们在做什么。 YMMV。
      • @DavidH 我已经对其进行了基准测试,Xcode 压缩的图像加载速度较慢。位图转换是微不足道且令人尴尬的并行 - CPU 或 GPU 没有比这更快的操作(它的 RAM 瓶颈)。 OTOH 较差的压缩意味着要从磁盘加载更多的数据(比 RAM 慢几个数量级)和要解压缩的更多数据(解压缩不能并行化)。我不相信苹果知道他们在做什么,例如。在 Mac 上,他们将 LZW TIFF 用于真彩色数据!
      • 您真的测量过 iOS 设备上的启动时间吗?使用 iOS 例程来测量“加载”时间可能无法准确反映某些专有接口需要多长时间。我很难相信 Apple 会无缘无故地这样做,而且实际上这对您的应用程序来说更糟,而且他们不在乎。就个人而言,当我发现图像更大时我感到震惊,我想我在上面添加了一个错误(应该说“Xcode Image Realignment”之类的,而不是压缩)。我在另一个支持您的断言的线程上发布了一个链接:imageoptim.com/tweetbot.html
      • did在设备上测量(我写了ImageOptim+ImageAlpha和你链接到的文章:),虽然我不能直接测量default.png的加载,但测试了不同的加载方式运行时的图像(注意强制 iOS 实际显示图像,而不是懒惰地假装加载)。
      • 我想我会相信 Apple 会决定他们的优化是否值得为他们自己的设备进行优化。如果您选择信任这个人,他虽然是 PNG 压缩方面的专家,但不在 Apple 工作,或者确切地知道他们为什么要应用这种特殊优化,那么这就是您的选择。
      【解决方案3】:

      请注意,添加到 Images.xcassets 中的任何图像仍会被压缩,而与“压缩 PNG 文件”标志无关。因此,如果您尝试为 Images.xcassets 中添加的图像保持相同的文件大小,则不可能。

      现在来到 PNGCrush,它是一个开源命令行工具,与 xcode 捆绑在一起,xcode 使用它来压缩图像。但是 pngcrush 通过清理不需要的块并重新创建 png 图像以获得最高质量进行压缩,因此压缩后的图像可能高于原始图像。

      还有很多其他的工具可以压缩。但是,Mac 世界中的人们很幸运能够将所有工具合并为一个最佳工具。 ImageOptim 无缝集成了最佳优化工具 PNGOUT、Zopfli、Pngcrush、AdvPNG、扩展 OptiPNG、JpegOptim、jpegrescan、jpegtran 和 Gifsicle。此外,使用 Imageoptim,您不必再将 jpg 转换为 png,然后再添加到应用程序 jpg 也使用 image optim 进行了优化。

      为了达到最佳捆绑大小,最好遵循以下操作

      • Clean-Build-Archive-Export 并注意 ipa 文件大小。

      • 将“压缩 PNG 文件”设置为否

      • 安装 Imageoptim(http://imageoptim.com/ 提供)

      • 转到终端并导航到源目录

      • 使用命令open -a ImageOptim .

      • 它会自动查找图像源并对其进行压缩(不用担心也会优化 .xcassets 中的图像)

      • 现在确保等待一段时间,让所有进度指示器都发红光

      • 清理并构建和存档,您会发现生成的 ipa 文件远小于原始文件。

      • 最后但并非最不重要的一点是,此后当您将图像添加到项目中时,只需确保添加优化的图像。就像将图像拖放到 imageOptim 中进行优化一样简单。

      • 此外,无论何时添加,请考虑将图像添加到直接用于应用级别而非数据级别的资产。如果要添加的图像用于数据级别,则将其直接添加到项目中,并且不要为其创建资产条目,因此至少这些图像不会被粉碎。

      祝大家压缩愉快:)

      【讨论】:

        猜你喜欢
        • 2010-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-11
        • 2015-12-21
        • 1970-01-01
        • 2013-04-16
        • 1970-01-01
        相关资源
        最近更新 更多