我正在尝试创建我的应用程序图标的视网膜就绪版本。这个应用程序的目标是10.5+。我正在使用Uli Kusterer的oldiconutil对我在10.8上使用iconutil从.iconset生成的.icns文件进行后期处理。问题是,如果我包含一个1024x1024图标("icon_512x512@2x.png"),该图标不会在10.5上显示。Finder不显示该图标,并且当它在10.5的icon Composer中打开时,它显示为空白/空。如果我移除此最大尺寸,图标将在10.5上正确显示。有趣的是,如果我用一个小得多的文件大小(大约300K而不是~1MB)替换一个完全不同的、更简单的1024x1024图像,那么这个图标在10.5上也能正常工作。因此,似乎在整个.icns文件和/或.icns文件中的单个图像块的文件大小上可能存在一些限制,当超出该限制时,就会破坏与Leopard的兼容性。
使用TinyPNG压缩1024x1024图像不足以解决此问题。在通过oldiconutil运行之前,它确实产生了一个小得多的.icns文件,但oldiconutil的最终JPEG2000压缩输出仍然比使用更简单的替代图像的变体大得多,可能是因为更复杂的图像根本就没有那么可压缩。
以前有没有其他人遇到过这个问题?你找到解决方案了吗?如果我找不到解决方案,我将不得不忽略一个视网膜就绪的应用程序图标,直到我放弃对10.5的支持。
发布于 2012-10-12 15:58:52
使用TinyPNG是正确的想法,但是当您使用oldiconutil创建.icns文件时,它会将它们转换为JP2,后者会更大,从而导致问题。
通过使用十六进制编辑器,您可以找到各个图标,并用TinyPNG版本替换特定的JP2版本。您还需要编辑icns标头中的文件长度字节(字节5-8),以及您换出的任何图标的图标图像长度字节( ic##类型后面的4个字节)。
我建议你只更换视网膜图标(ic10,ic11,ic12,ic13,ic14),因为较早的操作系统版本可能无法使用PNG图像。
如果你刚刚超过1MB的大小,你可以只替换最大的图标来达到限制。这将使大多数图标采用更兼容的JP2格式,只有PNG中的512@2x (ic10)图标。
希望这能有所帮助。
https://stackoverflow.com/questions/12772346
复制相似问题