Display video size on label tkinter

Viewed 168

The below code displays video on the label. But, problem is that, it is displayed in a very zoom (large) manner. I want to resize it to display correctly on label. When I use the option image=image.resize(), I get an error ValueError: cannot resize this array: it does not own its data


import tkinter as tk, threading
import imageio
from PIL import Image, ImageTk

video_name = "e.mp4" 
video = imageio.get_reader(video_name)
#video = video.resize(20,20)

def stream(label):

    for image in video.iter_data():
        frame_image = ImageTk.PhotoImage(Image.fromarray(image))
        label.config(image=frame_image)
        label.image = frame_image



root = tk.Tk()
my_label = tk.Label(root, width=500,height=500)
my_label.place(x=0,y=0)
thread = threading.Thread(target=stream, args=(my_label,))
thread.daemon = 1
thread.start()
root.mainloop()
1 Answers

You can call resize() on the return image of Image.fromarray(image):

frame_image = ImageTk.PhotoImage(Image.fromarray(image).resize((100,100)))
Related