Compare commits

..

6 Commits

Author SHA1 Message Date
david-biro f789c167e4
Merge b18a6095c1 into 0edcaae713 2024-09-28 01:21:36 -07:00
KRSHH 0edcaae713
Merge pull request #650 from KRSHH/main
Preview video Frame by Frame using left and right arrow keys
2024-09-28 12:37:40 +05:30
KRSHH dff6cec2f9
Comment Indention fix 2024-09-27 20:59:48 +05:30
KRSHH 4d1d2c86af
Preview video Frame by Frame using left and right arrow keys 2024-09-27 20:40:32 +05:30
KRSHH e00c398825
Merge branch 'hacksider:main' into main 2024-09-27 20:20:22 +05:30
KRSHH 683481804c
Delete outdated docs directory 2024-09-26 11:03:46 +05:30
3 changed files with 29 additions and 1 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

View File

@ -5,7 +5,7 @@ from typing import Callable, Tuple
import cv2 import cv2
from PIL import Image, ImageOps from PIL import Image, ImageOps
import tkinterdnd2 as tkdnd import tkinterdnd2 as tkdnd
import time
import modules.globals import modules.globals
import modules.metadata import modules.metadata
from modules.face_analyser import ( from modules.face_analyser import (
@ -682,6 +682,29 @@ def create_preview(parent: ctk.CTkToplevel) -> ctk.CTkToplevel:
) )
preview_slider.pack(fill="x", padx=20, pady=10) preview_slider.pack(fill="x", padx=20, pady=10)
last_update_time = 0
debounce_delay = 0.1 # Adjust this delay as needed (in seconds)
def on_key_press(event):
nonlocal last_update_time
current_time = time.time()
if current_time - last_update_time > debounce_delay:
current_frame = int(preview_slider.get())
if event.keysym == "Left":
new_frame = max(0, current_frame - 1)
elif event.keysym == "Right":
new_frame = min(int(preview_slider.cget("to")), current_frame + 1)
else:
return # Ignore other key presses
preview_slider.set(new_frame)
update_preview(new_frame)
last_update_time = current_time
preview.bind("<Left>", on_key_press)
preview.bind("<Right>", on_key_press)
return preview return preview
@ -879,6 +902,11 @@ def init_preview() -> None:
preview_slider.configure(to=video_frame_total) preview_slider.configure(to=video_frame_total)
preview_slider.pack(fill="x") preview_slider.pack(fill="x")
preview_slider.set(0) preview_slider.set(0)
# Disable slider if it's an image
if is_image(modules.globals.target_path):
preview_slider.configure(state="disabled")
else:
preview_slider.configure(state="normal")
def update_preview(frame_number: int = 0) -> None: def update_preview(frame_number: int = 0) -> None: