在Windows上如何使用pngcrush恢复XCode压缩?

7

我从IPA文件中提取了一些PNG图像,现在想要获取原始的PNG图像。有人建议我使用pngcush来完成这项任务。我已经下载了该软件,并尝试运行以下命令:

pngcrush -fix icon.png icon1.png

但是我遇到了一个libpng错误。我不知道是否需要下载libpng,因为错误信息没有说需要不同版本的libpng,只是说:

While reading icon.png:
  pngcrush caught libpng error:
   incorrect header check

我也尝试了这个:
pngcrush -revert-iphone-optimizations icon.png icn1.png

同时,pngcrush似乎不知道该命令。

你有什么想法吗?


请问您能否提供一个“针对iPhone优化”的PNG链接,以便我们进行测试? - Yves Martin
在Mac上,如果您不想使用终端,可以使用iPhonePNGApp。您只需提供图像目录,它就会将所有png图像转换为普通格式。非常简单。 - Egis
4个回答

3
您可能会对我开发的用于反向处理“pngcrush”操作的 C# 库感兴趣。我找到的所有现有实现都存在错误或者难以集成到我的项目中,因此我开发了这个库。它还带有单元测试,如果这使您感觉更安全的话。
“-iphone”选项是由苹果添加到pngcrush中的,仅在 iOS SDK 中的版本中可用,并且可以通过使用如下命令的“xcrun”来访问:
xcrun -sdk iphoneos pngcrush -iphone|-revert-iphone-optimizations ...

2
也许你可以尝试使用 pngdefry 工具。

它能够完美地处理带有多个IDAT标签的PNG图片。


看起来是个不错的选择。它似乎是为Linux构建的,但我会尝试在Windows上使用gcc编译器。谢谢。 - David Conde

2
这篇回答:pngcrush: uncrush on linux?解释了-revert-iphone-optimizations只存在于苹果版本的pngcrush中。但它指向了一些可能有效的其他选项。虽然它不是Windows,但由于有源代码,你也许可以让它工作。

谢谢Sparky!一旦工作允许,我会尝试的... :) - David Conde
有没有关于如何使用MingW编译源代码的想法? - David Conde
我没有Windows机器来尝试,但可以尝试这个命令:tar zxvf iphone-fixpng.tgz; cd iphone-fixpng; make all - Sparky
我已经弄清楚了... ;) 问题是,它似乎依赖于几个Linux特定的库... - David Conde

0

它可能不知道该命令。我在苹果开发者页面上找到的文档提到了-revert-iphone-optimizations,并指出pngcrush是IOS SDK的一部分。鉴于此,我建议这个特定版本已被苹果公司破解,并且可能不是官方pngcrush下载的一部分。如果是这样,您实际上需要安装它,并按照文章中所述使用其中包含的pngcrush。

我对该示例中使用的语法也有些怀疑。它看起来像一个长选项,而它们通常以两个连字符开头,而不是一个。这可能只是一个笔误,因此也可以尝试使用--revert-iphone-optimizations


抱歉@SpliFF,pngcrush的Windows版本无法正常工作,感谢您的帮助! - David Conde
是的,欢迎来到苹果/微软开发者锁定的世界。你唯一真正的选择似乎是找到一个有Mac的人。 - SpliFF
实际上我有两台Mac电脑,但我想将它作为Windows应用程序来解决。由于iTunes有这个功能,我认为这可能会发生,但是又想到,iTunes属于苹果公司,所以他们可能在作弊.. ;) - David Conde
我看到的问题是,苹果创建了一种专有的PNGCrush修改版和PNG格式,目的是为了锁定用户(显然,“优化”实际上比现有工具提供的更糟糕-http://imageoptim.com/tweetbot.html)。他们不会告诉任何人他们做了什么,因此只有通过逆向工程才能将格式支持带到其他平台。我怀疑你没有解决的办法。 - SpliFF
如果这还不够糟糕,ImageOptim声称苹果已经对他们使用的“优化”过程进行了专利申请。由于该格式似乎被优化得很差,你唯一能得出的结论就是苹果故意这样做以防止第三方iOS工具的开发。 - SpliFF
沿着供应商锁定的道路走... 我认为iTunes SDK可能会解决这个问题:http://developer.apple.com/sdk/itunescomsdk.html - David Conde

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接