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()
|