【问题标题】:How to create shortcut icons for Windows, MacOS and Linux applications bundled with PyInstaller如何为与 PyInstaller 捆绑的 Windows、MacOS 和 Linux 应用程序创建快捷方式图标
【发布时间】:2021-05-25 13:29:16
【问题描述】:

我正在构建一个与 PyInstaller 捆绑在一起的 Python 应用程序,它可用于 Windows、Linux(作为 AppImage)和 MacOS。

我需要那些快捷方式图标。我有一个徽标,但我正在努力将其转换为正确的格式。在我看来,这三个平台都使用不同的图标大小和格式。

是否有任何在线/离线生成器允许我从 jpg 文件为所有三个平台创建图标?

【问题讨论】:

  • 你用的是什么程序语言?
  • 问题中的标签非常重要。您真的应该选择的不仅仅是图标。
  • @DoanVanThang 我正在编写一个 python 应用程序,它作为 pyinstaller 可执行文件分发(在 Linux 上包装在 AppImage 中)
  • 查看pyinstallerpyinstaller.readthedocs.io/en/stable/usage.htmlicon参数,搜索在线PNG转ICO、ICNS转换器。

标签: python icons pyinstaller


【解决方案1】:

汤姆!我为您找到了解决方案!转到here 站点并将您的图像转换为icns 格式。然后在 pyinstaller 中运行命令:-

pyinstaller pythonfile.py -F --i=icon_name.icns -noconsole

效果很好。

如果您想在 windows 的文件中将图标添加到 python.py,请尝试以下操作:-

如果您使用的是 pygame,请使用此代码:-

icon = pygame.image.load('icon.png')
pygame.display.set_icon(icon)

如果您使用的是 TKinter,请使用以下代码:-

screen = Tk()

photo = PhotoImage(file = "Any image file")
screen.iconphoto(False, photo)

如果您想在文件完成后添加图标,请使用 Pyinstaller:-

pip install pyinstaller

在 pyinstaller 中使用这个命令:-

pyinstaller pythonfile.py -F --i icon_name.ico -noconsole

关于它的一些信息:-

  • -F 用于 1 个文件,因此它不会创建很多文件。只有 1 个是 .exe 文件本身。
  • 更多信息请访问此网站this site
  • 如果您不使用 GUI,请使用此命令:pyinstaller pythonfile.py -F --i icon_name.ico -nowindowed

希望对您有所帮助!

【讨论】:

  • 抱歉 2 次编辑。他们是因为事情搞砸了。
  • 谢谢你的回答,虽然是询问如何生成图标文件
  • 但这适用于所有三个平台吗?
  • 请查看我的编辑答案,它有效吗?请尝试后回复。谢谢
【解决方案2】:

正如您所提到的,您只需将徽标从 jpg 转换为相应操作系统的图标文件,然后尝试Pillow 的图像转换器。 此代码将为所有(Mac、Win、Linux)生成图标文件

from PIL import Image
filename = r'logo.jpg' # the directory of logo file
img = Image.open(filename) # reads the JPG file

# Generate and save the logo files
img.save('Win_logo.ico')   # On windows, icon file extension is .ico
img.save('Mac_logo.icns')  # On Mac OS, icon file extension is .icns
# Note: Creating icns requires Mac OS
img.save('Linux_logo.png') # in case if your AppImage requires any logo file

或者,您可以指定所需的图标大小(适用于 Windows):

icon_sizes = [(16,16), (32, 32), (48, 48), (64,64)]
img.save('logo.ico', sizes=icon_sizes)

Pillow docs 说默认情况下它会生成大小 [(16, 16), (24, 24), (32, 32), (48, 48), (64, 64), (128, 128), (255, 255)] 和任何大于原始大小或 255 的大小都将被忽略。

查看Pillow docs 了解更多信息。

因为 Pyinstaller 是基于操作系统的,而 ICNS 也是基于操作系统生成的

指定更多操作系统

from platform import system as OS_Name
os_name = OS_Name()
filename = r'logo.jpg' # the directory of logo file
img = Image.open(filename) # reads the JPG file

# Generate and save the logo files
if os_name == 'Windows': img.save('Win_logo.ico')   # On windows, icon file extension is .ico
if os_name == 'Darwin' : img.save('Mac_logo.icns')  # On Mac OS, icon file extension is .icns
# on Linux the os_name is 'Linux'
img.save('Linux_logo.png') # in case if your AppImage requires any logo file

独立于 ICNS 的操作系统

最好的独立于操作系统的方式是在线方式。 Cloud Convert 是一个很好的工具。但是,您必须先将jpg 转换为png。 [注意:请始终尝试使用png 作为徽标,因为它们具有透明度且更方便] 您可以使用上述代码的 PNG 部分将您的 JPG 自动转换为 PNG,或使用 JPG to PNG 最后使用PNG to ICNS转换你的PNG文件。

【讨论】:

  • 需要检查这是否有效,如果有效,这正是我正在寻找的。但你的意思是 img.save('Mac_logo.icns') 对吗?打错了,文件扩展名中缺少 s?
  • 有两个扩展名icnicns,因为我没有mac,我现在有点困惑。重新检查...
  • Traceback (most recent call last): File "createicons.py", line 7, in img.save('Mac_logo.icns') # 在 Mac OS 上,图标文件扩展名为 . icns 文件“/usr/lib/python3/dist-packages/PIL/Image.py”,第 1983 行,保存中 save_handler = SAVE[format.upper()] KeyError: 'ICNS'
  • 正如我在代码中评论的 [稍后更新] 就像 pyinstaller,您将需要 Mac 操作系统来创建 Mac 可执行文件以及 icns 文件。如果你有 Mac 电脑,那么它应该可以工作文件。操作系统指定的东西真的让程序员很头疼。检查任何在线 api 并为任何操作系统发布新答案
  • 嗯,好吧 - 所以我会在 mac 上做,应该没问题。
【解决方案3】:

如果您想将 PNG 转换为 ICO 格式,您可以使用 PNG 到 ICO 转换器(在线),例如 this。由于所有平台都支持.ICO 格式文件,这将是您的一站式商店。

首选图标大小是 96 像素 x 96 像素(高质量)或 48 像素 x 48 像素(中等质量)的正方形。

此外,要使用 pyinstaller 为您的应用程序设置图标,您可以在使用命令行创建安装程序时指定图标的路径。

pyinstaller --onefile --windowed --icon=app.ico app.py

这将创建一个安装程序,其中包含具有指定图标的应用程序。

【讨论】:

  • Mac OSX 真的也支持这些吗?认为他们需要额外的格式。不知道。
  • @TomAtix this 对您有帮助吗?
  • 所以这里说 .ico 仅适用于 windows,对于 OSX 我需要另一种格式... ico 是否适用于 linux 还是我也需要另一种格式?
  • 我认为 mac 原生支持 .icns 文件。 Linux 支持PNGXPMSVG 格式更多here。对于 Windows,它是 .ico 文件。我知道在创建多平台应用程序时需要关注很多。但它就是这样......
【解决方案4】:

如果你只使用auto-py-to-exe 会更容易,它使用 pyinstaller,但它会自动生成命令,因此你可以将图像上传到 GUI

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-04
    • 2022-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多