Stack Overflow en español Asked on November 13, 2021
En un post encontré algo relacionado con la extracción de thumbnail
de archivos .exe
, lamentablemente no pude probarla debido a que el código se encuentra incompleto y con librerías antiguas.
Después de un rato de investigación logre actualizar los métodos de los que hace uso el script, pero aun me arroja un error:
Traceback (most recent call last):
File "C:UsersDellDesktopf.py", line 40, in <module>
funcion('C:/Users/Dell/Desktop/f.py')
File "C:UsersDellDesktopf.py", line 16, in funcion
win32gui.DestroyIcon(small[0])
IndexError: list index out of range
Y no puedo hacerlo funcionar, espero puedan ayudarme dejo el codigo aqui abajo:
import win32ui
import win32gui
import win32con
import win32api
from io import StringIO
from PIL import Image
import os
def funcion(path):
tempDirectory = os.getenv("temp")
ico_x = win32api.GetSystemMetrics(win32con.SM_CXICON)
dst = 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()
funcion('C:/Users/Dell/Desktop/f.py')
Actualizacion 20/11/19
import win32ui
import win32gui
import win32con
import win32api
from io import StringIO
from PIL import Image
import os
def funcion(path):
tempDirectory = os.getenv("temp")
ico_x = win32api.GetSystemMetrics(win32con.SM_CXICON)
dst = 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("sd", "JPEG")
dst.seek(0)
os.remove(tempDirectory + "Icontemp.bmp")
return dst.read()
funcion('C:/Users/Dell/Desktop/f.py')
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP