TransWikia.com

Se puede extraer el .thumbnail de cualquier archivo en el sistema

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')

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP