# --- Gradio UI with backend API calls --- import gradio as gr import requests from PIL import Image import io BACKEND_URL = "https://cuddly-doodle1.onrender.com" def add_face(image, name): if image is None or not name: return "Please provide both image and name." buffered = io.BytesIO() image.save(buffered, format="PNG") files = {"image": ("image.png", buffered.getvalue(), "image/png")} data = {"name": name} try: r = requests.post(f"{BACKEND_URL}/add_face", files=files, data=data) return r.json().get("result", "Error") except Exception as e: return f"Error: {e}" def match_face(image): if image is None: return "Please upload an image." buffered = io.BytesIO() image.save(buffered, format="PNG") files = {"image": ("image.png", buffered.getvalue(), "image/png")} try: r = requests.post(f"{BACKEND_URL}/match_face", files=files) return r.json().get("result", "Error") except Exception as e: return f"Error: {e}" def get_status(): try: r = requests.get(f"{BACKEND_URL}/status") return r.json().get("result", "Error") except Exception as e: return f"Error: {e}" def clear_database(): try: r = requests.post(f"{BACKEND_URL}/clear_database") return r.json().get("result", "Error") except Exception as e: return f"Error: {e}" css = """ #col-left { margin: 0 auto; max-width: 450px; } #col-right { margin: 0 auto; max-width: 450px; } """ with gr.Blocks(css=css) as demo: gr.HTML("""
Professional Face Recognition System