我在内存中有一个图标(RGB 或我想要通过 PIL/Pillow 的任何格式),我想将它与
win32gui.Shell_NotifyIcon
这需要一个HICON
. 如何将我的 RGB 像素放入 HICON?
或者,即使这很浪费,我什至不介意通过临时文件进行往返并使用 重新加载它win32gui.LoadImage
,如下所示:
from PIL import Image
#create example image with empty pixels:
img = Image.frombuffer("RGB", (32, 32), "\0"*32*32*3, "raw", "RGB", 0, 1)
img = img.convert("P")
img = img.resize((64, 64), Image.ANTIALIAS)
img.save("C:\\temp.ico", format="bmp")
import win32gui, win32api, win32con
flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE
win32gui.LoadImage(None, "C:\\temp.ico", win32con.IMAGE_ICON, 0, 0, flags)
但这失败了:pywintypes.error: (0, 'LoadImage', 'No error message available')
我只是找不到可以写入的图片格式,然后可以LoadImage
在IMAGE_ICON
模式下读取和正确使用。似乎LoadImage
只支持ICO
该模式下的文件:我可以读回PNG
或BMP
数据为IMAGE_BITMAP
,但生成的句柄不能被Shell_NotifyIcon
. 有没有办法将它转换IMAGE
成一个HICON
?(在记忆中)