17

我一直在尝试使用 py2exe 将图标 (.ico) 嵌入到我的“编译”.exe 中。

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

windows=[{
    'script':'MyScript.py',
    'icon_resources':[(1,'MyIcon.ico')]
}]

这就是我正在使用的。该图标在 Windows XP 或更低版本上显示正常,但在 Vista 上根本不显示。我想这是因为新的 Vista 图标格式,它可以是 PNG 格式,最大 256x256 像素。

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

我很喜欢使用外部实用程序而不是 py2exe 来做这件事——我已经尝试过这个命令行实用程序来嵌入它,但它总是会破坏我的 exe 并由于某种原因截断它的大小。

4

4 回答 4

20

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

并使用

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

它从 1 个或多个 's 创建一个ICO文件PNG并处理多种大小等。我猜 XP 对此没有问题。

于 2009-02-08T10:06:26.560 回答
4

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

于 2011-06-01T09:21:52.467 回答
4

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

编译后,exe上的图标消失。根据Resource Hacker工具,在调查时,图标被添加到索引 0,但如果我使用相同的工具替换图标,它会被添加到索引 1。一旦在索引 1,图标就会神奇地出现在资源管理器中,再次与 exe 相对。

如果绝望,您可以使用 Resource Hacker 来修改 exe post-build,它可以通过命令行界面编写脚本,但我尝试了上面解释的方法,并在像这样反转 png 文件后设法让它工作。

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

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

于 2012-05-01T21:49:00.807 回答
3

Greenfish Iceon Editor Pro 的链接已损坏。我扫描了网络,发现下载 IcoFX 在我的 .exe 文件中使用了 IcoFX 程序,可以看到它确实包含我的图标。

使用菜单 Image->Create Windows Icons from Image,然后接受选择,我得到了一个新的 .ico 文件,该文件可在 win7 和 win xp 上运行。

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

于 2012-01-30T23:38:49.003 回答