File size: 2,519 Bytes
b7130f6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import io
import random

import gradio as gr
import requests
from PIL import Image

MAX_SEED = 2 ** 31 - 1
session = requests.Session()

def _fetch_url(*args, **kwargs):
    try:
        response = session.get(*args, **kwargs)
        response.raise_for_status()
        return response.content
    except requests.RequestException as e:
        print(f"Request error: {e}")
    return None

def generate(
    prompt,
    seed=None,
    randomize_seed=True,
    width=1024,
    height=1024
):
    if seed is None or randomize_seed:
        seed = random.randint(0, MAX_SEED)
    url = f"https://pollinations.ai/p/{prompt}?nologo=true&private=true"
    params = dict(prompt=prompt, seed=seed, width=width, height=height)
    image = _fetch_url(url, params=params)
    if image:
        return Image.open(io.BytesIO(image))
    return None

with gr.Blocks(
    title="Text-to-image UI",
    css="footer {display: none !important}"
) as app:
    gr.Markdown("Text-to-image UI by [cherry-ghosts](https://hf.co/cherry-ghosts)")
    with gr.Tab("Generate"):
        result = gr.Image(
            label="Image",
            show_label=False,
            format="jpeg",
            interactive=False
        )
        with gr.Group():
            with gr.Row():
                prompt = gr.Textbox(
                    label="Prompt",
                    show_label=False,
                    placeholder="Enter your prompt..",
                    max_lines=1,
                    container=False
                )
                btn = gr.Button("Generate", variant="primary")

    with gr.Tab("Advanced settings"):
        with gr.Row():
            seed = gr.Slider(
                label="Seed",
                minimum=0,
                maximum=MAX_SEED,
                step=1
                value=0
            )
            randomize_seed = gr.Checkbox(label="Randomize seed", value=True)

        with gr.Row():
            width = gr.Slider(
                label="Width",
                minimum=256,
                maximum=1344,
                step=64
                value=1024
            )
            height = gr.Slider(
                label="Height",
                minimum=256,
                maximum=1344,
                step=64
                value=1024
            )

    btn.click(
        generate,
        inputs=[prompt, seed, randomize_seed, width, height],
        outputs=[result],
        api_name="run"
    )

if __name__ == "__main__":
    app.queue().launch(debug=True, ssr_mode=False)