从这里的邮件列表中,我找到了这个代码片段:
import win32ui
import win32gui
import win32con
import win32api
ico_x = win32api.GetSystemMetrics(win32con.SM_CXICON)
ico_y = win32api.GetSystemMetrics(win32con.SM_CYICON)
large, small = win32gui.ExtractIconEx("C:\Program Files (x86)\Malwarebytes' Anti-Malware\mbam.exe",0)
win32gui.DestroyIcon(small[0])
hdc = win32ui.CreateDCFromHandle( win32gui.GetDC(0) )
hbmp = win32ui.CreateBitmap()
hbmp.CreateCompatibleBitmap( hdc, ico_x, ico_x )
hdc = hdc.CreateCompatibleDC()
hdc.SelectObject( hbmp )
hdc.DrawIcon( (0,0), large[0] )
hbmp.SaveBitmapFile( hdc, 'icon.bmp')
从那里,您可以PIL
以正常Image.open
方式加载它。
如果您仔细阅读文档,您应该能够避免 IO 步骤并在需要时在内存中完成所有操作。PIL
有一个 fromfrombuffer
方法,可用于将结果转换为GetBitmapBits
对象Image
。