Форум сайта python.su
Всем доброго! Подскажите пожалуйста каким способом можно вытащить иконку из exe-файла, какие пакеты при этом использовать?
Офлайн
Офлайн
Вот нашел пример:
import win32ui
import win32gui
import win32con
import win32api
import cStringIO
import Image
import os
tempDirectory = os.getenv("temp")
ico_x = win32api.GetSystemMetrics(win32con.SM_CXICON)
dst = cStringIO.StringIO()
for ss in range(0, 73):
if len(str(ss)) == 1:
FF = "0" + str(ss)
else:
FF = str(ss)
path = r"c:/base/base.exe/base_" + FF + ".exe"
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, r"c:/BASE/baseico/ico_" + FF + ".bmp")
im = Image.open(r"c:/BASE/baseico/ico_" + FF + ".bmp")
im.save(dst, "JPEG")
dst.seek(0)
#os.remove(tempDirectory + "\Icontemp.bmp")
#return
#dst.read()
Офлайн
Но как сделать фон белым не знаю.модуль PIL для работы с картинками поможет тебе :)
Офлайн
В контекст через hdc.DrawIcon рисуете? Так перед этим фон залейте своим цветом.
http://msdn.microsoft.com/en-us/library/dd145203(VS.85).aspx
Офлайн
Андрей СветловДень добрый! Пробовал
В контекст через hdc.DrawIcon рисуете? Так перед этим фон залейте своим цветом.
http://msdn.microsoft.com/en-us/library/dd145203(VS.85).aspx
hdc.SetBkColor(win32api.RGB(255,255,255))
Офлайн
Нашел
hdc.FillSolidRect((0, 0, 32, 32), 0xffffff)
Офлайн