Python 在.exe中嵌入带有py2exe的图标,在Vista中可见?

Python 在.exe中嵌入带有py2exe的图标,在Vista中可见?,python,windows-vista,embed,icons,py2exe,Python,Windows Vista,Embed,Icons,Py2exe,我一直在尝试将一个图标(.ico)嵌入到我的带有py2exe的compyled.exe中 Py2Exe确实有一种嵌入图标的方法: windows=[{ 'script':'MyScript.py', 'icon_resources':[(1,'MyIcon.ico')] }] 这就是我正在使用的。该图标在Windows XP或更低版本上显示良好,但在Vista上根本不显示。我想这是因为新的Vista图标格式,它可以是PNG格式,高达256x256像素 那么,如何让py2exe将

我一直在尝试将一个图标(.ico)嵌入到我的带有py2exe的compyled.exe中

Py2Exe确实有一种嵌入图标的方法:

windows=[{
    'script':'MyScript.py',
    'icon_resources':[(1,'MyIcon.ico')]
}]
这就是我正在使用的。该图标在Windows XP或更低版本上显示良好,但在Vista上根本不显示。我想这是因为新的Vista图标格式,它可以是PNG格式,高达256x256像素

那么,如何让py2exe将它们嵌入到我的可执行文件中,而不破坏Windows XP上的图标呢


我很喜欢用外部工具而不是py2exe来实现它-我尝试过嵌入它,但它总是会破坏我的exe并出于某种原因截断它的大小。

Vista使用高分辨率256x256像素的图标图像,它们是使用基于PNG的压缩来存储的。问题是,如果您只需制作图标并将其保存为标准XP
ICO
格式,则生成的文件将
400Kb
存储在磁盘上。解决方法是压缩图像。使用的压缩方案是PNG(便携式网络图形),因为它具有良好的无损率并支持alpha通道

和使用

png2ico myicon.ico logo16x16.png logo32x32.png logo255x255.png

它从一个或多个
PNG
创建一个
ICO
文件,并处理多个大小等。我想XP对此不会有问题。

正如Helmut所说,图标大小的顺序似乎是关键。
反转页面(首先是较大的页面)解决了Windows 7上“包含资源”(使用Py2exe 0.6.9)的问题。

指向Greenfish Iceon Editor Pro的链接已断开。 我扫了一下网,发现 在我的.exe文件上使用IcoFX程序,可以看到它确实包含我的图标

使用菜单Image->createwindows Icons from Image,然后接受这些选项,我得到了一个新的.ico文件,它在win7和win-xp上都能工作


在此之前,我的单个48x48.ico文件没有显示为程序的图标

我在Windows7上使用包含32x32像素图像的.ico文件嵌入py2exe的图标资源时遇到问题。我使用的方法与原来的问题相同

编译后,exe上的图标将消失。根据工具,在调查中,图标添加在索引0处,但如果我使用相同的工具替换图标,它将添加在索引1处。在索引1处,图标再次神奇地出现在浏览器中,与exe相对

如果不顾一切,您可以使用Resource Hacker修改exe后期构建,并且可以通过命令行界面编写脚本,但我尝试了上面解释的方法,并在像这样反转png文件后成功地使其工作

png2ico.exe myico.ico myico248x248.png myico48x48.png myico32x32.png myico16x16.png

顺便说一句,通过向ico文件添加多个图标,您将在图标索引1处填充资源,在本例中为myico248x248.png。

png2ico创建的图标确实有效,但png2ico拒绝使用256x256 png版本的“我的图标”,它只需要较小的尺寸。(上面写着:“宽度必须是8的倍数,也许你的最大分辨率是255x255?我想它看起来不会有太大的不同。我已经用png2ico生成了一个有效的图标(最大尺寸为248)并在py2exe setup.py中正确指定了它,但它仍然不会在资源管理器中显示为生成的exe图标。资源黑客显示该图标嵌入到exe中,但资源管理器没有。这很奇怪。作为此答案的最新说明:如果您刚刚将图标添加到.exe文件中,并且有一个构建脚本不断覆盖相同的图标。exe文件,资源管理器将不会显示新图标,因为它将“缓存”该.exe没有图标的事实。重新启动Explorer.exe(不仅仅是关闭/重新打开窗口)修复此问题。注意:正如@Helmut在下面提到的,顺序必须颠倒。顺序很重要。此外,我使用了248x248,但不确定什么是最好的:
png2ico.exe myico.ico myico248x248.png myico48x48.png myico32x32.png myico16x16.png
来自py2exe网站:只是想说,IcoFX工作得很好,支持logo.Pn的alpha通道g2ico工作正常,但我们的图标看起来像素化了,对于专业应用程序来说还不够好。尽管如此,Png2ico是免费的,IcoFX不是(虽然有免费试用版,您可以使用它导出)。要在IcoFX中创建正确的图标,非常简单-我只需将其从256x256.PNG格式拖放,然后单击“保存”,它就生成了一个包含所有Py2exe格式的Windows图标(包括较旧操作系统的低分辨率格式)我也遇到了同样的问题。当我将多个图像包装到图标文件中后,它终于起作用了。我遇到了这个问题,但是
myicon248x248.png
仍然会在资源0处结束。请参阅