Macos 视网膜就绪。10.5 Leopard上的icns图标文件(大小限制?)

Macos 视网膜就绪。10.5 Leopard上的icns图标文件(大小限制?),macos,cocoa,png,icns,iconutil,Macos,Cocoa,Png,Icns,Iconutil,我正在尝试创建我的应用程序图标的视网膜就绪版本。该应用程序的目标是10.5+。我正在使用Uli Kusterer对.icns文件进行后期处理,该文件是我在10.8上使用icontuil从.iconset生成的。问题是,如果我包含1024x1024图标(“图标_512x512@2x.png),则该图标不会显示在10.5上。Finder不显示图标,当它在10.5的icon Composer中打开时,它显示为空白/空。如果删除此最大尺寸,图标将在10.5上正确显示。有趣的是,如果我将一个完全不同、更简

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

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


以前有其他人遇到过这个问题吗?你找到解决办法了吗?如果我想不出一个解决方案,在我放弃对10.5的支持之前,我只能省略一个视网膜就绪应用程序图标。

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

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

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

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

希望这有帮助