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() | |