Pagina 1 di 1

risolto . Tkinter - jpg su video con tempi troppo lunghi

Inviato: domenica 24 maggio 2015, 14:21
da maresama
Per avere sul video un'immagine .JPG uso questa funzione:

Codice: Seleziona tutto

def Img(ft,r=0.9):
    from PIL import Image, ImageTk
    root = Tk()
    w = root.winfo_screenwidth()
    h = root.winfo_screenheight()
    w=int(w*r)
    h=int(h*r)
    PILFile = Image.open(ft)
    PILFile = PILFile.resize((w, h), Image.ANTIALIAS)
    Image = ImageTk.PhotoImage(PILFile) # <---
    ImageLabel = Label(root, image=Image)
    ImageLabel.image = Image
    ImageLabel.pack()
    root.mainloop()

Img(ft)        # foto.JPG

Ma occorrono 3-5 secondi per ogni cambio immagine.
1 - esiste un modo più veloce ?
2 - perchè se metto 'from PIL import Image, ImageTk' fuori della funzione mi da:
File "9prova1.py", line 2092, in Img
PILFile = Image.open(ft)
UnboundLocalError: local variable 'Image' referenced before assignment
3 - come devo fare per avere l'immagine che copra tutto il video (copertura eventuali barre ecc) ovviamente con r=1
Grazie

Re: Tkinter - jpg su video con tempi troppo lunghi

Inviato: domenica 24 maggio 2015, 22:34
da Claudio_F
1) non so, forse mettendo tutto in un canvas... ma ho il sospetto che sia il resize a portare via la maggior parte del tempo:

Codice: Seleziona tutto

canvas = Canvas(root, width=w, height=h, highlightthickness=0)
canvas.create_image(0, 0, image=pil_image, anchor='nw')
canvas.pack()
2) Stai creando conflitto tra il nome del modulo importato e la variabile 'Image' definita nella funzione.

3) per usare una finestra full screen si può fare così:

Codice: Seleziona tutto

root.attributes('-fullscreen', True)

Re: Tkinter - jpg su video con tempi troppo lunghi

Inviato: martedì 26 maggio 2015, 0:18
da maresama
Con canvas non cambia nulla: se però elimino il resize i tempi cambiano! E' proprio quello il problema (e non penso si possa far nulla)
Il full screen è perfetto!
per l'errore non avevo pensato al conflitto (imperdonabile.... a volte mi perdo in un bicchiere d'acqua!)

Grazie... e sempre molto esauriente per me. bravo! Ciao.