Tim Roberts a écrit :

I think you're making this a lot harder than it needs to be.

    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:/windows/system32/shell32.dll",0)
    win32gui.DestroyIcon(large[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), small[0] )
    hbmp.SaveBitmapFile( hdc, "save.bmp" )
I make some modification but it's work ! Great !

   import win32ui
   import win32gui
   import win32con
   import win32api
   import cStringIO
   import Image
tempDirectory = os.getenv("temp")
   ico_x = win32api.GetSystemMetrics(win32con.SM_CXICON)

   dst = cStringIO.StringIO()

   large, small = win32gui.ExtractIconEx(path,0)
   win32gui.DestroyIcon(small[0])
#creating a destination memory DC
   hdc = win32ui.CreateDCFromHandle( win32gui.GetDC(0) )
   hbmp = win32ui.CreateBitmap()
   hbmp.CreateCompatibleBitmap(hdc, ico_x, ico_x)
   hdc = hdc.CreateCompatibleDC()
hdc.SelectObject( hbmp ) #draw a icon in it
   hdc.DrawIcon( (0,0), large[0] )
   win32gui.DestroyIcon(large[0])
#convert picture
   hbmp.SaveBitmapFile( hdc, tempDirectory + "\Icontemp.bmp")
im = Image.open(tempDirectory + "\Icontemp.bmp")
   im.save(dst, "JPEG")

   dst.seek(0)
os.remove(tempDirectory + "\Icontemp.bmp") return dst.read()


I have a last little detail : the icon have the tranparence but the bmp take this in black. In win32ui, there are not attribute to set the background in white before write the bmp in DC ... an idea ?

Thanks a lot.
_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to