File size: 1,745 Bytes
3266b60 df949d3 2520dea 0ffaf55 df949d3 fa3cda5 2520dea fa3cda5 2520dea 570f004 2520dea df949d3 0ffaf55 df949d3 22a4581 0ffaf55 df949d3 22a4581 fa3cda5 df949d3 fa3cda5 570f004 df949d3 fa3cda5 22a4581 df949d3 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 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
source_bytes = BytesIO()
source_img.save(source_bytes, format="JPEG")
source_b64 = base64.b64encode(source_bytes.getvalue()).decode("utf-8")
target_bytes = BytesIO()
target_img.save(target_bytes, format="JPEG")
target_b64 = base64.b64encode(target_bytes.getvalue()).decode("utf-8")
result = client.predict(
source_file=source_b64, # Передаем base64 строку
target_file=target_b64, # Передаем base64 строку
doFaceEnhancer=doFaceEnhancer,
api_name="/predict",
api_key=api_key # Передаем api_key в predict
)
# Конвертируем результат из байтов в 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()
|