File size: 1,810 Bytes
3266b60 fa3cda5 2520dea 0ffaf55 fa3cda5 2520dea fa3cda5 2520dea 570f004 2520dea 0ffaf55 22a4581 0ffaf55 22a4581 fa3cda5 0ffaf55 fa3cda5 570f004 fa3cda5 22a4581 0ffaf55 22a4581 fa3cda5 2520dea fa3cda5 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 |
import gradio as gr
from gradio_client import Client, handle_file
import os
import random
from io import BytesIO
from PIL import Image
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 изображения в байты
source_bytes = BytesIO()
source_img.save(source_bytes, format="JPEG") # или PNG, в зависимости от формата
source_bytes.seek(0)
target_bytes = BytesIO()
target_img.save(target_bytes, format="JPEG") # или PNG, в зависимости от формата
target_bytes.seek(0)
result = client.predict(
source_file=handle_file(source_bytes.read(), filename="source.jpg"), # Добавляем имя файла
target_file=handle_file(target_bytes.read(), filename="target.jpg"), # Добавляем имя файла
doFaceEnhancer=doFaceEnhancer,
api_name="/predict",
api_key=api_key
)
# Конвертируем результат из байтов обратно в PIL Image
output_image = Image.open(BytesIO(result))
return output_image
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()
|