Spaces:
Sleeping
Sleeping
File size: 3,686 Bytes
b7130f6 495de9f 914db2c b7130f6 3ee5c51 d7a7f21 3ee5c51 d7a7f21 b7130f6 eb4340e b7130f6 914db2c b7130f6 f7e8a5c 970f37f f7e8a5c b7130f6 a80fd23 b7130f6 5904bc3 b7130f6 a80fd23 b7130f6 b4dffda b7130f6 b4dffda b7130f6 b4dffda b7130f6 eb4340e 2e381e6 f2bbc1c 8389ca8 7acd290 f2bbc1c 8389ca8 b7130f6 eb4340e 9103190 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
import io
import random
import time
from urllib.parse import quote
import gradio as gr
import requests
from PIL import Image
MAX_SEED = 2 ** 31 - 1
session = requests.Session()
def _fetch_url(*args, retries=5, **kwargs):
for i in range(retries + 1):
try:
response = session.get(*args, **kwargs)
response.raise_for_status()
return response.content
except requests.RequestException:
if response.status_code in {429, 500, 502, 503, 504}:
delay = min(2 ** i, 60)
time.sleep(delay)
else:
return None
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/{quote(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}",
theme=gr.themes.Base(
primary_hue="red",
secondary_hue="red",
neutral_hue="neutral"
)
) 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.Row(variant="panel"):
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
)
with gr.Accordion("ℹ️ About this UI", open=False):
gr.Markdown(f"""
* Created by [🍒 cherry-ghosts community](https://hf.co/cherry-ghosts)
* Powered by [🐝 Pollinations](https://pollinations.ai) | [GitHub](https://github.com/pollinations/pollinations)
* Running on [Gradio](https://www.gradio.app) v{gr.__version__}
""")
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_api=False
)
if __name__ == "__main__":
app.queue().launch(debug=True, ssr_mode=False) |