import gradio as gr import subprocess import shutil import os from PIL import Image import numpy as np # Ensure output directory exists output_dir = "output" if not os.path.exists(output_dir): os.makedirs(output_dir) # Login function for authentication def custom_auth(username, password): return password == "aitutor" def run_scripts(target, source, use_face_enhancer): if target is None or (not use_face_enhancer and source is None): return None target_extension = os.path.splitext(target.name)[-1] output_path1 = os.path.join(output_dir, "output1" + target_extension) output_path2 = os.path.join(output_dir, "output2" + target_extension) if not use_face_enhancer: cmd1 = ["python3", "run.py", "-s", source.name, "-t", target.name, "-o", output_path1, "--frame-processor", "face_swapper"] subprocess.run(cmd1) cmd2 = ["python3", "run.py", "-t", target.name if use_face_enhancer else output_path1, "-o", output_path2, "--frame-processor", "face_enhancer"] subprocess.run(cmd2) if not use_face_enhancer: os.remove(source.name) os.remove(target.name) # Open the image with PIL and convert to NumPy array with Image.open(output_path2) as img: img_array = np.array(img) return img_array iface = gr.Interface( fn=run_scripts, inputs=[ "file", "file", gr.inputs.Checkbox(default=False, label="Use only Face Enhancer") ], outputs="image", title="Pixio Swap", description="Upload a target image/video and a source image to swap faces.", live=True ) iface.launch(debug=True, auth=custom_auth)