10.5 Leopard上的Retina-ready .icns图标文件(大小限制?)

时间:2012-10-07 19:56:44

标签: macos cocoa png icns iconutil

我正在尝试创建应用程序图标的视网膜就绪版本。该应用程序的目标是10.5+。我正在使用Uli Kusterer的oldiconutil在10.8上使用iconutil从.iconset处理我生成的.icns文件。问题是,如果我包含1024x1024图标(“icon_512x512@2x.png”),则图标不会显示在10.5上。 Finder不显示图标,当它在10.5中的Icon Composer中打开时,它显示为空白/空白。如果删除此最大尺寸,则图标会在10.5上正确显示。有趣的是,如果我用更小的文件大小替换一个完全不同的,更简单的1024x1024图像(~300K而不是~1MB),那么图标在10.5上再次正常工作。因此,似乎整个.icns文件的文件大小和/或.icns文件中的单个图像块可能会有一些限制,当超过它时会破坏与Leopard的兼容性。

使用TinyPNG压缩1024x1024图像还不足以解决问题。它在通过oldiconutil运行之前确实产生了一个明显更小的.icns文件,但是使用更简单的替代图像,oldiconutil的最终JPEG2000压缩输出仍然比变体大得多,可能是因为更复杂的图像根本不是可压缩的。

之前是否有其他人遇到此问题?你找到了解决方案吗?如果我找不到解决方案,我将不得不省略视网膜就绪应用程序图标,直到我放弃对10.5的支持。

1 个答案:

答案 0 :(得分:2)

使用TinyPNG是正确的想法,但是当您使用oldiconutil创建.icns文件时,它会将它们转换为JP2,它们更大并导致问题。

通过使用十六进制编辑器,您可以找到各个图标,并用TinyPNG版本替换特定的JP2版本。您还需要编辑icns标头中的文件长度字节(字节5-8)以及图标图像长度字节(ic ## type之后的4个字节),用于您换出的任何图标。

我建议你只更换视网膜图标(ic10,ic11,ic12,ic13,ic14),因为较旧的操作系统版本可能无法使用PNG图像。

如果您刚刚超过1MB大小,则可以只替换最大的图标以达到限制。这将使大多数图标处于更兼容的JP2格式,而PNG中只有512 @ 2x(ic10)图标。

希望这有帮助。