问题
What's a good way to generate an icon in-memory in python? Right now I'm forced to use pygame to draw the icon, then I save it to disk as an .ico file, and then I load it from disk as an ICO resource...
Something like this:
if os.path.isfile(self.icon):
icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE
hicon = win32gui.LoadImage(hinst,
self.icon,
win32con.IMAGE_ICON,
0,
0,
icon_flags)
...where self.icon is the filename of the icon I created.
Is there any way to do this in memory? EDIT: All I want to do is create an icon with a 2-digit number displayed on it (weather-taskbar style.
回答1:
You can use wxPython for this.
from wx import EmptyIcon
icon = EmptyIcon()
icon.CopyFromBitmap(your_wxBitmap)
The wxBitmap can be generated in memory using wxMemoryDC, look here for operations you can do on a DC.
This icon can then be applied to a wxFrame (a window) or a wxTaskBarIcon using:
frame.SetIcon(icon)
回答2:
You can probably create a object that mimics the python file-object interface.
http://docs.python.org/library/stdtypes.html#bltin-file-objects
回答3:
This is working for me and doesn't require wx.
from ctypes import *
from ctypes.wintypes import *
CreateIconFromResourceEx = windll.user32.CreateIconFromResourceEx
size_x, size_y = 32, 32
LR_DEFAULTCOLOR = 0
with open("my32x32.png", "rb") as f:
png = f.read()
hicon = CreateIconFromResourceEx(png, len(png), 1, 0x30000, size_x, size_y, LR_DEFAULTCOLOR)
来源:https://stackoverflow.com/questions/211046/create-an-icon-in-memory-with-win32-in-python