Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from PIL import Image | |
| import io | |
| import os | |
| from dotenv import load_dotenv | |
| import google.generativeai as genai | |
| # Load API key from .env or environment | |
| load_dotenv() | |
| genai.configure(api_key=os.getenv("GOOGLE_API_KEY")) | |
| # Initialize the Gemini model | |
| model = genai.GenerativeModel("gemini-1.5-flash") | |
| def analyze_artwork(image: Image.Image): | |
| if image is None: | |
| return "Please upload an image." | |
| # Convert image to bytes | |
| img_bytes = io.BytesIO() | |
| image.save(img_bytes, format="JPEG") | |
| img_bytes = img_bytes.getvalue() | |
| try: | |
| response = model.generate_content([ | |
| "You are an expert art historian. Analyze this artwork image in detail. " | |
| "Comment on its style, brushstrokes, color palette, composition, possible historical context, " | |
| "and whether it might be a forgery.", | |
| {"mime_type": "image/jpeg", "data": img_bytes} | |
| ]) | |
| return response.text | |
| except Exception as e: | |
| return f"Error calling Gemini API:\n{e}" | |
| # Gradio interface | |
| gInterface = gr.Interface( | |
| fn=analyze_artwork, | |
| inputs=gr.Image(type="pil", label="Upload Artwork"), | |
| outputs="text", | |
| title="🖼️ M.O.N.A - Machine for Objective Neural Art-analysis", | |
| description="Upload an artwork and get analysis that provides objective insight. Powered by Google's Gemini AI." | |
| ) | |
| gInterface.launch() | |