File size: 1,674 Bytes
3266b60
df949d3
2520dea
 
0ffaf55
 
df949d3
fa3cda5
2520dea
 
 
 
fa3cda5
 
 
2520dea
570f004
2520dea
3412fa4
55a5166
 
22a4581
fa3cda5
3412fa4
 
fa3cda5
570f004
3412fa4
fa3cda5
1e6c8a5
22a4581
3412fa4
 
 
0ffaf55
22a4581
fa3cda5
 
2520dea
fa3cda5
3412fa4
 
 
 
0ffaf55
fa3cda5
 
 
22a4581
 
fa3cda5
 
22a4581
fa3cda5
3266b60
 
fa3cda5
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
import gradio as gr
from gradio_client import Client
import os
import random
from io import BytesIO
from PIL import Image
import base64

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()
        client = Client("tuan2308/face-swap")

        # Кодируем PIL изображения в base64, используя gr.processing_utils
        source_b64 = gr.encode_pil_to_base64(source_img)
        target_b64 = gr.encode_pil_to_base64(target_img)

        result = client.predict(
            source_file=source_b64,
            target_file=target_b64,
            doFaceEnhancer=doFaceEnhancer,
            api_name="/predict",
            api_key=api_key #  Передаем api_key в predict
        )
        print(result)

        # Декодируем результат из base64 в PIL Image
        result_decoded = base64.b64decode(result) # Декодируем результат
        output_image = Image.open(BytesIO(result_decoded))
        return output_image

    except Exception as e:
        print(f"Ошибка при вызове API: {e}")
        return None

    except Exception as e:
        print(f"Ошибка при вызове API: {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()