import gradio as gr from PIL import Image from io import BytesIO import base64 import traceback from backend import process_image def inference(image: Image.Image, gemini_api_key: str): """ פונקציה שמבצעת זיהוי וטשטוש נשים בתמונה, ומעדכנת את סרגל ההתקדמות בהתאם. """ if not gemini_api_key.strip(): raise gr.Error("אנא הכנס מפתח API של Gemini על מנת להמשיך") progress = gr.Progress() # אובייקט לעדכון ההתקדמות def progress_callback(fraction, description=""): """ פונקציה פנימית שתיקרא מ-backend בכל שלב. fraction - ערך בין 0 ל-1 (לדוגמה 0.3 = 30%) description - מלל להסבר השלב """ progress(fraction, desc=description) try: # כעת נקרא ל-process_image עם אפשרות לעדכן התקדמות encoded_image = process_image(image, gemini_api_key, progress_callback=progress_callback) decoded_image = Image.open(BytesIO(base64.b64decode(encoded_image))) return decoded_image, gr.update(value="", visible=False) # החזרת תמונה ו-Textbox מוסתר except Exception as e: # טיפול בשגיאה והחזרת הודעה ב-Textbox error_message = f"שגיאה: {type(e).__name__}\n" error_message += f"הודעה: {e}\n\n" error_message += "Traceback:\n" error_message += traceback.format_exc() return None, gr.update(value=error_message, visible=True) # החזרת Textbox גלוי עם שגיאה title_str = "🤖 זיהוי וטשטוש נשים בתמונה" description_str = """
ברוכים הבאים לכלי לזיהוי וטשטוש נשים בתמונה!
העלו תמונה, הזינו את מפתח ה־API של Gemini,
ולחצו על "הרץ" כדי לנתח את התמונה ולטשטש אוטומטית נשים.
שימו לב: נדרש מפתח API תקין של Gemini כדי להשתמש בכלי זה.
הכלי משתמש בטכנולוגיות מתקדמות כמו YOLO, SAM2 ו-Gemini.