File size: 2,193 Bytes
21f0a5b
 
 
52dcdf4
da232e2
15a90e0
 
 
ce28e8d
15a90e0
 
 
 
 
 
 
 
 
 
 
 
 
21f0a5b
 
920f0eb
 
 
52dcdf4
920f0eb
52dcdf4
920f0eb
 
 
d7eb5b7
920f0eb
21f0a5b
920f0eb
5c9cabb
 
15a90e0
5c9cabb
21f0a5b
920f0eb
21f0a5b
920f0eb
21f0a5b
 
 
920f0eb
 
 
21f0a5b
1cf060c
920f0eb
21f0a5b
0c93b15
21f0a5b
 
920f0eb
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import gradio as gr
import subprocess
import os
from datetime import datetime
from PIL import Image
from huggingface_hub import login, upload_file

# --- Config ---
REPO_ID = os.environ.get("HFPATH")
HF_TOKEN = os.environ.get("MAGIC")
login(HF_TOKEN)
def upload_to_hf(filepath):
    filename = os.path.basename(filepath)
    SUBFOLDER = datetime.now().strftime("%Y%m%d")
    path_in_repo = f"{SUBFOLDER}/{filename}"
    upload_file(
        path_or_fileobj=filepath,
        path_in_repo=path_in_repo,
        repo_id=REPO_ID,
        repo_type="dataset"
    )
    return f"https://huggingface.co/datasets/{REPO_ID}/blob/main/{filename}"

def run_scripts(target, source, use_face_enhancer):
    output_images = []  # Danh sách để lưu các ảnh đã xử lý
    for target_file in target:
        target_extension = os.path.splitext(target_file.name)[-1]  # Lấy phần mở rộng của tệp
        timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
        output_path1 = f"output_{timestamp}{target_extension}"  # Đường dẫn tệp đầu ra

        # Chạy lệnh subprocess để xử lý ảnh
        cmd1 = [
            "python3", "run.py", "-s", source.name, "-t", target_file.name,
            "-o", output_path1, "--frame-processor", "face_swapper"
        ]
        subprocess.run(cmd1)

        # Mở ảnh đã được xử lý và thêm vào danh sách
        output_image = Image.open(output_path1)
        upload_to_hf(output_path1)
        output_images.append(output_image)

    return output_images  # Trả về danh sách ảnh đã xử lý

# Giao diện Gradio
iface = gr.Interface(
    fn=run_scripts,
    inputs=[
        gr.Files(label="Target Files"),  # Đầu vào là tệp tin mục tiêu (ảnh/video)
        gr.File(label="Source File"),    # Đầu vào là tệp nguồn (ảnh)
        gr.Checkbox(label="Use Face Enhancer")  # Tùy chọn cho face enhancer
    ],
    outputs=gr.Gallery(label="Output Images"),  # Đầu ra là các ảnh đã được xử lý
    title="Face Swapper",
    description="Upload a target image/video and a source image to swap faces.",
    live=False
)

if __name__ == "__main__":
    iface.launch()