FaceSwap / app.py
Rooni's picture
Update app.py
1865d84 verified
raw
history blame
1.69 kB
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) # Запускаем на всех интерфейсах