MindCraft24729's picture
Update app.py
4ea1b97 verified
import gradio as gr
import requests
import random
from io import BytesIO
from PIL import Image
import os
# Constants
BASE_URL = "https://image.pollinations.ai/prompt/"
WATERMARK_PATH = "CodeHubb.png"
# Load and prepare watermark
watermark = Image.open(WATERMARK_PATH).convert("RGBA")
watermark = watermark.resize((300, 100))
watermark.putalpha(128) # 50% opacity
def generate_image(prompt):
if not prompt:
raise gr.Error("Please enter a prompt.")
seed = random.randint(1, 999999)
url = f"{BASE_URL}{prompt}?width=2048&height=2048&seed={seed}&nologo=true&model=flux"
try:
response = requests.get(url, stream=True)
response.raise_for_status()
img = Image.open(BytesIO(response.content)).convert("RGBA")
# Paste watermark in top-left
img.paste(watermark, (20, 20), watermark)
# Ensure /mnt/data directory
os.makedirs("/mnt/data", exist_ok=True)
# Save as JPG
rgb_img = img.convert("RGB")
download_path = "/mnt/data/generated_image.jpg"
rgb_img.save(download_path, "JPEG", quality=95)
return img, download_path
except Exception as e:
raise gr.Error(f"❌ Unexpected error: {str(e)}")
# Interface
with gr.Blocks(css=".gr-button-lg {width: 100% !important;}") as demo:
gr.Markdown("## πŸš€ CodeHubb Image Generator\nYour Creative Partner – **Design. Develop. Dominate**")
prompt = gr.Textbox(label="Enter Prompt", placeholder="e.g. cinematic mountain road", lines=2)
generate_btn = gr.Button("🎨 Generate Image", elem_classes="gr-button-lg")
image_output = gr.Image(label="Generated Image", type="pil")
download_button = gr.File(label="⬇️ Download JPG", elem_classes="gr-button-lg")
generate_btn.click(fn=generate_image, inputs=[prompt], outputs=[image_output, download_button])
# βœ… Fix: Allow /mnt/data for download
demo.launch(allowed_paths=["/mnt/data"])