File size: 1,690 Bytes
3266b60 2520dea 0ffaf55 1865d84 df949d3 c1942c1 fa3cda5 2520dea fa3cda5 2520dea 1865d84 2520dea 55a5166 22a4581 c1942c1 1865d84 c1942c1 1865d84 c1942c1 1865d84 3412fa4 1865d84 0ffaf55 22a4581 c1942c1 2520dea 3412fa4 c1942c1 3412fa4 fa3cda5 22a4581 fa3cda5 22a4581 fa3cda5 3266b60 1865d84 |
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 59 60 61 62 |
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) # Запускаем на всех интерфейсах
|