You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发启动器需提取.exe图标,如何用Python实现?

提取EXE文件图标并在程序中展示的解决方案

一、icoextract工具的实用操作步骤

1. 先完成安装

用pip直接安装:

pip install icoextract

2. 核心提取代码

替换路径就能直接运行:

from icoextract import IconExtractor

# 替换成你的目标EXE路径
exe_path = "C:/Your/Program.exe"
extractor = IconExtractor(exe_path)

# 提取主图标并保存为ICO文件,size可选16/32/64/256等常用尺寸
extractor.export_icon("app_icon.ico", size=256)

3. 程序内直接展示(以Tkinter为例)

不想存本地的话,可直接在内存中处理后展示:

from icoextract import IconExtractor
from PIL import Image, ImageTk
import tkinter as tk
import io

exe_path = "C:/Your/Program.exe"
extractor = IconExtractor(exe_path)

# 获取图标字节流,无需保存文件
icon_bytes = extractor.get_icon_bytes(size=256)
img = Image.open(io.BytesIO(icon_bytes))

# Tkinter展示逻辑
root = tk.Tk()
tk_img = ImageTk.PhotoImage(img)
tk.Label(root, image=tk_img).pack()
root.mainloop()

二、Windows原生替代方案(不用icoextract也能实现)

如果icoextract用着不顺,试试pywin32的原生API,适合纯Windows环境的启动器开发:

import win32api
import win32con
import win32gui
from PIL import Image
import io

def get_exe_icon(exe_path, icon_size=(256,256)):
    # 提取图标句柄
    large_icons, _ = win32gui.ExtractIconEx(exe_path, 0)
    hicon = large_icons[0]
    
    # 创建绘图上下文和位图
    hdc = win32gui.GetDC(0)
    hbmp = win32gui.CreateCompatibleBitmap(hdc, *icon_size)
    hdc_mem = win32gui.CreateCompatibleDC(hdc)
    
    # 把图标绘制到位图上
    win32gui.SelectObject(hdc_mem, hbmp)
    win32gui.DrawIconEx(hdc_mem, 0, 0, hicon, *icon_size, 0, None, win32con.DI_NORMAL)
    
    # 转换为PIL Image
    bmp_info = win32api.GetObject(hbmp)
    buffer = win32gui.GetBitmapBits(hbmp, bmp_info.bmWidthBytes * bmp_info.bmHeight)
    img = Image.frombuffer("RGBA", icon_size, buffer, "raw", "BGRA", 0, 1)
    
    # 释放系统资源
    win32gui.DeleteObject(hbmp)
    win32gui.DeleteDC(hdc_mem)
    win32gui.ReleaseDC(0, hdc)
    win32gui.DestroyIcon(hicon)
    
    return img

# 使用示例
exe_icon = get_exe_icon("C:/Your/Program.exe")
exe_icon.show()  # 直接预览,也能传入GUI组件展示

内容的提问来源于stack exchange,提问作者Boubou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 09:43:23