File size: 1,933 Bytes
4fe4c17
 
 
 
fa2f7ce
4fe4c17
 
4ea1b97
fa2f7ce
4ea1b97
31252ab
4ea1b97
e8ef30d
 
 
 
6fe4884
4fe4c17
31252ab
a5ef918
4fe4c17
e8ef30d
6bbeb1c
fa2f7ce
 
 
 
6bbeb1c
4ea1b97
e8ef30d
6bbeb1c
4ea1b97
ac0361e
 
4ea1b97
8f91df0
e8ef30d
 
23a32f1
e8ef30d
6bbeb1c
fa2f7ce
e8ef30d
4fe4c17
4ea1b97
e8ef30d
 
4fe4c17
4ea1b97
e8ef30d
 
4ea1b97
8f91df0
e8ef30d
a5ef918
4ea1b97
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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"])