From the mailing list here , I found this piece of code:
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')
From there, you can load it into PIL in the normal Image.open mode.
If you are digging documents, you should be able to avoid the I / O step and do all this in memory if you want. PIL has a frombuffer method that you can use to convert the result of GetBitmapBits to an Image object.
source share