我一直试图在py2exe的“compyled”.exe中嵌入一个图标(.ico)。
Py2Exe确实有一种嵌入图标的方法:
windows=[{
'script':'MyScript.py',
'icon_resources':[(1,'MyIcon.ico')]
}]
这就是我正在使用的东西。该图标在Windows XP或更低版本上显示正常,但在Vista上根本不显示。我想这是因为新的Vista图标格式,可以是PNG格式,最高可达256x256像素。
那么,如何让py2exe将它们嵌入到我的可执行文件中,而不会破坏Windows XP上的图标?
我很喜欢使用外部实用程序而不是py2exe - 我已经尝试this command-line utility来嵌入它,但它总是会破坏我的exe并因某种原因而截断它的大小。
答案 0 :(得分:20)
Vista使用高分辨率 256x256 像素图像的图标,它们使用基于PNG的压缩进行存储。问题是如果您只是制作图标并以标准XP ICO
格式保存,则生成的文件将在磁盘上为400Kb
。解决方案是压缩图像。使用的压缩方案是PNG
(可移植网络图形),因为它具有良好的无损比率并支持alpha通道。
并使用
png2ico myicon.ico logo16x16.png logo32x32.png logo255x255.png
它会从1个或多个ICO
创建一个PNG
文件并处理多个大小等等。我猜XP也没有问题。
答案 1 :(得分:4)
正如赫尔穆特所说,似乎图标大小的顺序是关键。 反转页面(首先是较大的页面)解决了Windows 7上的'include_resources'问题(使用Py2exe 0.6.9)。
答案 2 :(得分:4)
我在使用包含32x32像素图像的.ico文件在Windows7上嵌入带有py2exe的图标资源时出现问题。我使用与原始问题相同的方法。
编译完成后,exe上的图标消失。根据{{3}}工具,在调查时会在索引0处添加图标,但如果我使用相同的工具替换图标,则会在索引1处添加该图标。一旦在索引1处,该图标就会神奇地出现在资源管理器中exe再次。
如果绝望,你可以使用Resource Hacker来修改exe后构建,它可以通过命令行界面编写脚本,但我尝试了上面解释的方法并设法在反转png文件之后使其工作。
png2ico.exe myico.ico myico248x248.png myico48x48.png myico32x32.png myico16x16.png
顺便说一句,通过在ico文件中添加多个图标,您无论如何都会在图标索引1处填充资源,在本例中为myico248x248.png。
答案 3 :(得分:3)
Greenfish Iceon Editor Pro的链接已损坏。 我扫描了网,找到Download IcoFX 在我的.exe文件中使用了IcoFX程序,可以看到它确实包含了我的图标。
使用菜单Image->从Image创建Windows图标,然后接受选择我得到了一个同时适用于win7和win xp的新.ico文件。
在此之前,我的单个48x48.ico文件没有显示为该程序的图标。