4

Apple 的 iOS SDK 使用 pngcrush 的修改版本来转换 iOS 包中的 png 文件。他们的版本也可以还原更改(使用“-revert-iphone-optimizations”开关),但原始版本不能。

是否有可以在 Linux 上运行并恢复 iphone 优化的工具?

谢谢。

4

2 回答 2

3

iphone-fixpng在 Linux 中工作。请参阅此讨论来解释它的作用。我正在链接到 web.archive.org,因为原版已关闭。

于 2011-08-21T19:04:46.357 回答
3

您可以选择使用其中之一:

  1. 使用 VirtualBox 在 linux 中安装 Hackintosh。在里面安装 Xcode,然后做这样的事情

    $ /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush -dir uncrushed -revert-iphone-optimizations -q *.png
    

    这使用来自苹果的修改过的 pngcrush 来撤消其优化。猜猜这适用于所有粉碎的png。请参阅以获得更准确的命令xcrun

  2. 从此博客下载iPIN.py并执行为

    $ python ipin.py
    

    这将从实际目录及其子目录中解压所有文件。不用担心调用两次,根据我的经验,它不会损坏已经未粉碎的 png。从这里你会发现 ipin.py 不会去优化所有的苹果 png

    它 ( ipin.py ) 无法处理多个 IDAT 块,不适用于 Adam7 隔行扫描图像,并且无法修复预乘 alpha。

  3. 使用特定的gnome 二进制工具。这需要几个低级步骤:

    $ git clone https://github.com/hadess/fixpng-thumbnailer.git
    $ cd fixpng-thumbnailer
    $ ./autogen.sh
    $ make
    $ sudo make install
    

    之后,您可以使用一个新命令gnome-fixpng-thumbnailer,其工作原理如下

    $ gnome-fixpng-thumbnailer [输入文件] [输出文件]

    小心这个命令,因为如果在同一个 png 上调用两次,它会破坏 png。

    我这样使用它:

    $ for file in *.png; do echo "   $file";gnome-fixpng-thumbnailer $file $file; done
    

    你会猜到为什么会回显文件名。那是因为这个命令可能会默默地失败,(没有 $? 如果失败则为非零)并且您将拥有的唯一线索是“ZLib 错误!-3”消息。这是一个快速的解决方案,因为有趣的是,您会发现ipin.py确实取消了这些文件。

阅读本文以了解有关pngdefry的另一个工具。它提供了关于所有这些东西的宝贵信息——甚至它的来源——但我自己还没有尝试过。

我希望pngcrush吸收了这些功能,因此您可以立即使用它,至少我已经向 pngcrush 维护者发送了一封邮件(嗨 Glenn)。

于 2013-11-05T20:31:24.260 回答