File size: 3,295 Bytes
f86ef0c 689df9f f86ef0c 619238b e2e3c24 619238b a081231 ee00b5d f4e7385 e2e3c24 619238b f86ef0c 6879969 619238b 17610a2 619238b 1974db4 c4b82ef af16514 619238b 6879969 f86ef0c f5b7834 f86ef0c 619238b f86ef0c 57d84d6 619238b 57d84d6 f86ef0c 6d82c44 f86ef0c 619238b 87f1ebb 619238b 87f1ebb 619238b f86ef0c 8b990bd 5dd7553 8b990bd dcbbf2e 1974db4 5dd7553 f86ef0c 1974db4 a408ff4 95ae0b9 |
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 |
import gradio as gr
import requests
import json
import io
import random
import os
from PIL import Image
API_BASE_URL = "https://api-inference.huggingface.co/models/"
MODEL_LIST = [
"runwayml/stable-diffusion-v1-5",
"CompVis/stable-diffusion-v1-4",
"stabilityai/stable-diffusion-xl-base-1.0",
"openskyml/dalle-3-xl",
"Linaqruf/animagine-xl-2.0",
"Lykon/dreamshaper-7",
"Linaqruf/animagine-xl",
"prompthero/openjourney-v4",
"nerijs/pixel-art-xl",
"Linaqruf/anything-v3.0",
"playgroundai/playground-v2-1024px-aesthetic",
"ilovecutiee/fantastical-art-lora",
"segmind/SSD-1B",
"segmind/Segmind-Vega",
"stablediffusionapi/anything-v5",
"stablediffusionapi/realistic-vision-v51",
"hakurei/waifu-diffusion",
"digiplay/RunDiffusionFXPhotorealistic_v1"
]
API_TOKEN = os.getenv("HF_READ_TOKEN") # Make sure to set your Hugging Face token
HEADERS = {"Authorization": f"Bearer {API_TOKEN}"}
def select_model(model_name):
if model_name in MODEL_LIST:
return f"{API_BASE_URL}{model_name}"
def generate_image(prompt, selected_model, is_negative=False, steps=1, cfg_scale=6, seed=None):
if not prompt.strip():
raise gr.Error("Cannot generate image: Input text is empty!")
model_url = select_model(selected_model)
API_URL = f"{model_url}"
payload = {
"inputs": prompt,
"is_negative": is_negative,
"steps": steps,
"cfg_scale": cfg_scale,
"seed": seed if seed is not None else random.randint(-1, 2147483647)
}
try:
response = requests.post(API_URL, headers=HEADERS, json=payload)
response.raise_for_status()
image_bytes = io.BytesIO(response.content)
image = Image.open(image_bytes)
return image
except requests.exceptions.RequestException as e:
raise gr.Error(e)
with gr.Blocks(theme="soft") as playground:
gr.HTML(
"""
<div style="text-align: center; margin: 0 auto;">
<div style="display: inline-flex; align-items: center; gap: 0.8rem; font-size: 1.75rem;">
<h1 style="font-weight: 900; margin-bottom: 7px; margin-top: 5px;">🎨🤖 Play with SD Models</h1>
</div>
<p style="margin-bottom: 10px; font-size: 94%; line-height: 23px;">
Explore and create your AI art with Stable Diffusion models!
</p>
</div>
"""
)
with gr.Row():
image_output = gr.Image(type="pil", label="Output Image", elem_id="gallery")
with gr.Column(elem_id="prompt-container"):
text_prompt = gr.Textbox(label="Prompt", placeholder="a cute cat", lines=1, elem_id="prompt-text-input")
model_dropdown = gr.Dropdown(label="Model", choices=MODEL_LIST, elem_id="model-dropdown", value="runwayml/stable-diffusion-v1-5")
gen_button = gr.Button("Generate", variant='primary', elem_id="gen-button")
with gr.Accordion("Advanced settings", open=False):
negative_prompt = gr.Textbox(label="Negative Prompt", value="text, blurry, fuzziness", lines=1, elem_id="negative-prompt-text-input")
gen_button.click(generate_image, inputs=[text_prompt, model_dropdown, negative_prompt], outputs=image_output)
playground.launch(show_api=False) |