Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from google import genai | |
| from google.genai import types | |
| from PIL import Image | |
| from io import BytesIO | |
| import tempfile | |
| import os | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| GOOGLE_API_KEY = os.environ.get("GOOGLE_API_KEY") | |
| os.environ["GOOGLE_API_KEY"] = GOOGLE_API_KEY | |
| client = genai.Client(api_key=GOOGLE_API_KEY) | |
| st.set_page_config(page_title="Image Generator", layout="centered") | |
| st.title("🧠✨ Image Generator") | |
| st.markdown("Enter a prompt below and generate an AI image with a description!") | |
| prompt = st.text_input("Enter your prompt") | |
| if st.button("Generate"): | |
| if prompt: | |
| with st.spinner("Generating image and description..."): | |
| try: | |
| response = client.models.generate_content( | |
| model="imagen-3.0-generate-002", | |
| contents=prompt, | |
| config=types.GenerateContentConfig( | |
| response_modalities=['Text', 'Image'] | |
| ) | |
| ) | |
| result_text = "" | |
| result_image = None | |
| temp_file_path = None | |
| for part in response.candidates[0].content.parts: | |
| if part.text is not None: | |
| result_text += part.text | |
| elif part.inline_data is not None: | |
| result_image = Image.open(BytesIO(part.inline_data.data)) | |
| temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".png") | |
| result_image.save(temp_file.name) | |
| temp_file_path = temp_file.name | |
| st.subheader("Generated Description") | |
| st.text(result_text) | |
| if result_image: | |
| st.image(result_image, caption="Generated Image", use_column_width=True) | |
| with open(temp_file_path, "rb") as f: | |
| st.download_button( | |
| label="📥 Download Image", | |
| data=f, | |
| file_name="generated_image.png", | |
| mime="image/png" | |
| ) | |
| except Exception as e: | |
| st.error(f"An error occurred: {e}") | |
| else: | |
| st.warning("Please enter a prompt before generating.") | |