Happy 80k!

2.1 Released!

- Face randomizer added!
This commit is contained in:
Kenneth Estanislao
2026-03-13 22:09:18 +08:00
parent 3c8b259a3f
commit ee9699ee70
3 changed files with 31 additions and 3 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
<h1 align="center">Deep-Live-Cam 2.0.5c</h1> <h1 align="center">Deep-Live-Cam 2.1</h1>
<p align="center"> <p align="center">
Real-time face swap and video deepfake with a single click and only a single image. Real-time face swap and video deepfake with a single click and only a single image.
+1 -1
View File
@@ -1,3 +1,3 @@
name = 'Deep-Live-Cam' name = 'Deep-Live-Cam'
version = '2.0.3c' version = '2.1'
edition = 'GitHub Edition' edition = 'GitHub Edition'
+29 -1
View File
@@ -10,6 +10,8 @@ import json
import queue import queue
import threading import threading
import numpy as np import numpy as np
import requests
import tempfile
import modules.globals import modules.globals
import modules.metadata import modules.metadata
from modules.face_analyser import ( from modules.face_analyser import (
@@ -192,9 +194,15 @@ def create_root(start: Callable[[], None], destroy: Callable[[], None]) -> ctk.C
select_face_button = ctk.CTkButton( select_face_button = ctk.CTkButton(
root, text=_("Select a face"), cursor="hand2", command=lambda: select_source_path() root, text=_("Select a face"), cursor="hand2", command=lambda: select_source_path()
) )
select_face_button.place(relx=0.1, rely=0.30, relwidth=0.3, relheight=0.1) select_face_button.place(relx=0.1, rely=0.30, relwidth=0.24, relheight=0.1)
ToolTip(select_face_button, _("Choose the source face image to swap onto the target")) ToolTip(select_face_button, _("Choose the source face image to swap onto the target"))
random_face_button = ctk.CTkButton(
root, text="🔄", cursor="hand2", width=30, command=lambda: fetch_random_face()
)
random_face_button.place(relx=0.35, rely=0.30, relwidth=0.05, relheight=0.1)
ToolTip(random_face_button, _("Get a random face from thispersondoesnotexist.com"))
swap_faces_button = ctk.CTkButton( swap_faces_button = ctk.CTkButton(
root, text="", cursor="hand2", command=lambda: swap_faces_paths() root, text="", cursor="hand2", command=lambda: swap_faces_paths()
) )
@@ -766,6 +774,26 @@ def update_tumbler(var: str, value: bool) -> None:
) )
def fetch_random_face() -> None:
PREVIEW.withdraw()
try:
response = requests.get(
"https://thispersondoesnotexist.com/",
headers={"User-Agent": "Mozilla/5.0"},
timeout=10,
)
response.raise_for_status()
temp_dir = tempfile.gettempdir()
temp_path = os.path.join(temp_dir, "deep_live_cam_random_face.jpg")
with open(temp_path, "wb") as f:
f.write(response.content)
modules.globals.source_path = temp_path
image = render_image_preview(temp_path, (200, 200))
source_label.configure(image=image)
except Exception as e:
print(f"Failed to fetch random face: {e}")
def select_source_path() -> None: def select_source_path() -> None:
global RECENT_DIRECTORY_SOURCE, img_ft, vid_ft global RECENT_DIRECTORY_SOURCE, img_ft, vid_ft