Spaces:
Running
Running
File size: 2,983 Bytes
b7130f6 eb4340e b7130f6 a80fd23 b7130f6 a80fd23 b7130f6 b4dffda b7130f6 b4dffda b7130f6 b4dffda b7130f6 eb4340e b7130f6 eb4340e 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 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
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 add_to_gallery(image, gallery=None):
if gallery is None:
gallery = []
if image is not None:
gallery = gallery + [image]
return gallery
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")
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("⚙️ 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
)
with gr.Tab("🖼️ Gallery"):
gallery = gr.Gallery(
label="Gallery",
show_label=False,
format="jpeg",
interactive=False
)
btn.click(
generate,
inputs=[prompt, seed, randomize_seed, width, height],
outputs=[result],
api_name="run"
).then(
add_to_gallery,
inputs=[result, gallery],
outputs=[gallery],
queue=False,
show_label=False
)
if __name__ == "__main__":
app.queue().launch(debug=True, ssr_mode=False) |