Spaces:
Runtime error
Runtime error
import gradio as gr | |
from gradio import components | |
import openai | |
from PIL import Image, ImageDraw | |
import requests | |
from io import BytesIO | |
genre_descriptions = { | |
"Horror": "Dark, eerie, and suspenseful ambiance.", | |
"Sci-Fi": "Futuristic, technological, and other-worldly themes.", | |
"Romance": "Warm, tender, and emotionally evocative imagery.", | |
"Adventure": "Exhilarating, action-packed, and exploratory vibes.", | |
"Comedy": "Light-hearted, whimsical, and humorous elements.", | |
"Drama": "Intense, emotional, and thought-provoking scenarios.", | |
"Fantasy": "Magical, mythical, and dream-like settings.", | |
"Action": "Dynamic, high-energy, and thrilling scenes.", | |
"Mystery": "Intriguing, puzzling, and enigmatic atmosphere.", | |
"Thriller": "Tense, exciting, and adrenaline-inducing compositions.", | |
} | |
def generate_poster(api_key, genre, title): | |
openai.api_key = api_key | |
genre_description = genre_descriptions.get(genre, "") | |
prompt = (f"Create a visually striking movie poster for a {genre} film titled '{title}'. " | |
f"The poster should encapsulate the essence and atmosphere of a typical {genre} movie, " | |
f"without including any text or titles. The design should be original, imaginative and " | |
f"should instantly communicate the genre to the viewer. {genre_description}") | |
response = openai.Image.create( | |
prompt=prompt, | |
n=1, | |
size="1024x1024" | |
) | |
image_url = response['data'][0]['url'] | |
response = requests.get(image_url) | |
img = Image.open(BytesIO(response.content)) | |
return img | |
def main(): | |
genre_options = [ | |
"Horror", "Sci-Fi", "Romance", "Adventure", | |
"Comedy", "Drama", "Fantasy", "Action", | |
"Mystery", "Thriller" | |
] | |
iface = gr.Interface( | |
fn=generate_poster, | |
inputs=[ | |
components.Textbox(label="API Key", type="password"), | |
components.Dropdown(label="Genre", choices=genre_options), | |
components.Textbox(label="Title", placeholder="e.g., 'The Haunting Shadows'") | |
], | |
outputs=components.Image(label="Generated Poster", type="pil"), | |
) | |
iface.launch() | |
if __name__ == "__main__": | |
main() | |