Spaces:
Sleeping
Sleeping
| 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"]) | |