# Import necessary libraries | |
import gradio as gr # For building the web interface | |
from transformers import pipeline # To use Hugging Face models | |
# Load the DALL-E Mini model from Hugging Face | |
# Using pipeline to handle the model. Note: 'dalle-mini' is lightweight and CPU-friendly | |
generator = pipeline("text-to-image-generation", model="flax-community/dalle-mini") | |
# Function to generate comic-style panels from a user's story description | |
def generate_comic_panels(story_description): | |
# Break the story into key points (naive splitting; could use NLP techniques for better splitting) | |
scenes = story_description.split(". ") | |
images = [] | |
for scene in scenes: | |
# Generate an image for each scene using the loaded model | |
image = generator(scene) | |
images.append(image[0]["generated_image"]) # Get the generated image from the response | |
return images | |
# Set up the Gradio interface | |
# User inputs their story description, and we generate images as a comic-style series | |
demo = gr.Interface( | |
fn=generate_comic_panels, # Function to be called when the user interacts | |
inputs=gr.Textbox(lines=5, placeholder="Enter your short story description here..."), # User input | |
outputs=gr.Gallery(label="Generated Comic Panels").style(grid=[2]), # Display images in a gallery format | |
title="GenArt Narrative", | |
description="Enter a short story description, and we'll transform it into a comic strip!" | |
) | |
# Launch the app | |
if __name__ == "__main__": | |
demo.launch() | |