我在存储器(RGB或任何格式我经由PIL /枕头想要的)的图标和我想与Shell_NotifyIcon
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')
我只是找不到可以写入的图片格式,然后可以在IMAGE_ICON
模式下通过正确读回并正确使用。看来只支持ICO
这种模式下的文件:我可以回读PNG
或BMP
数据为IMAGE_BITMAP
,但生成的句柄不能被Shell_NotifyIcon
使用。 有没有办法将IMAGE
转换为HICON
? (内存)
我认为传递给'LoadImage'的第三个参数应该是'win32con.IMAGE_BITMAP'。 – martineau
如果你阅读完整的文章,你会发现,当使用'IMAGE_BITMAP''时,'Shell_NotifyIcon'不能使用结果句柄。 – totaam
对不起。我读了一些说:“我不知道这是否适用于所有情况,但在WinXP上,.ico可以是16x16,32x32或64x64大小的bmp。只需将扩展名从bmp更改为ico,即可准备好走。” – martineau