File size: 3,611 Bytes
f86ef0c 689df9f f86ef0c 619238b e2e3c24 e9f9016 619238b d3b167c 619238b a081231 ee00b5d f4e7385 1fc1aa6 f4e7385 e2e3c24 3f0dde0 55f2bb1 619238b f86ef0c 6879969 619238b 17610a2 619238b 1974db4 c4b82ef 9adb21a af16514 619238b 6879969 f86ef0c f5b7834 f86ef0c 619238b f86ef0c 57d84d6 619238b 57d84d6 c4b3ea9 f86ef0c 10540ed 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 90 91 92 93 94 |
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",
"stabilityai/stable-diffusion-2",
"openskyml/dalle-3-xl",
"Linaqruf/animagine-xl-2.0",
"Lykon/dreamshaper-7",
"Linaqruf/animagine-xl",
"prompthero/openjourney",
"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",
"WarriorMama777/OrangeMixs",
"stablediffusionapi/anything-v5",
"stablediffusionapi/realistic-vision-v51",
"hakurei/waifu-diffusion",
"digiplay/RunDiffusionFXPhotorealistic_v1",
"stablediffusionapi/juggernaut-xl-v5",
"dataautogpt3/OpenDalleV1.1"
]
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("Error generating 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("The service/model is unavailable. Please try again later, or select another model.")
with gr.Blocks(theme="miittnnss/green", title="Play with Stable Diffusion Models") 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) |