File size: 1,690 Bytes
3266b60
2520dea
 
0ffaf55
1865d84
df949d3
c1942c1
fa3cda5
2520dea
 
 
 
fa3cda5
 
 
2520dea
1865d84
 
2520dea
55a5166
 
22a4581
c1942c1
 
 
 
 
 
1865d84
c1942c1
 
 
1865d84
c1942c1
 
1865d84
 
3412fa4
1865d84
0ffaf55
22a4581
c1942c1
 
2520dea
3412fa4
c1942c1
3412fa4
 
fa3cda5
 
 
22a4581
 
fa3cda5
 
22a4581
fa3cda5
3266b60
 
1865d84
 
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
62
import gradio as gr
import os
import random
from PIL import Image
from io import BytesIO
import base64
import requests

KEYS = os.getenv("KEYS").split(",")

def get_random_api_key():
    return random.choice(KEYS)

def swap_face_api(source_img, target_img, doFaceEnhancer):
    try:
        api_key = get_random_api_key()
        api_url = "https://tuan2308-face-swap-predict.hf.space/api/predict/"


        source_b64 = gr.encode_pil_to_base64(source_img)
        target_b64 = gr.encode_pil_to_base64(target_img)

        payload = {
            "data": [
                source_b64,
                target_b64,
                doFaceEnhancer
            ],
            "api_key": api_key
        }

        response = requests.post(api_url, json=payload)
        response.raise_for_status()

        result = response.json()
        result_data = result["data"][0]  #  Убедитесь, что индекс корректный
        result_decoded = base64.b64decode(result_data)
        output_image = Image.open(BytesIO(result_decoded))

        return output_image

    except requests.exceptions.RequestException as e:
        print(f"Ошибка API: {e}")
        return None
    except Exception as e:
        print(f"Ошибка: {e}")
        return None

iface = gr.Interface(
    fn=swap_face_api,
    inputs=[
        gr.Image(type="pil", label="Source Image"),
        gr.Image(type="pil", label="Target Image"),
        gr.Checkbox(label="Face Enhancer?")
    ],
    outputs=gr.Image(type="pil", label="Output Image"),
    title="Face Swap via API"
)

iface.launch(server_name="0.0.0.0", server_port=7860) #  Запускаем на всех интерфейсах