import streamlit as st from PIL import Image import requests import io import base64 # Set page config st.set_page_config(page_title="AI Image Generator", page_icon="🎨", layout="wide") # Custom CSS st.markdown(""" """, unsafe_allow_html=True) # Title st.title("🎨 AI Image Generator (Dalle-mini)") # Input area prompt = st.text_area("Enter your image description:", height=100) # Generate button if st.button("Generate Image"): if prompt: try: with st.spinner("Generating your masterpiece..."): # Make a request to the Dalle-mini API (Craiyon) response = requests.post("https://backend.craiyon.com/generate", json={"prompt": prompt}) if response.status_code == 200: image_data = response.json()['images'][0] image = Image.open(io.BytesIO(base64.b64decode(image_data))) # Display the image st.image(image, caption="Generated Image", use_column_width=True) # Add download button buf = io.BytesIO() image.save(buf, format="PNG") st.download_button( label="Download Image", data=buf.getvalue(), file_name="generated_image.png", mime="image/png" ) else: st.error("Failed to generate image. Please try again.") except Exception as e: st.error(f"An error occurred: {str(e)}") else: st.warning("Please enter a prompt to generate an image.") # Footer st.markdown("---") st.markdown("Created with ❤️ for 3EyeDimensions AI Engineer Internship") st.markdown("Note: This app uses the Dalle-mini model for image generation.")