File size: 3,954 Bytes
f86ef0c 689df9f f86ef0c 619238b a081231 ee00b5d f4e7385 4b130be 619238b f86ef0c 6879969 619238b 17610a2 619238b 1974db4 af16514 4b76800 1974db4 55cc769 1974db4 57d84d6 17610a2 57d84d6 7e29452 4b76800 1974db4 c4b82ef af16514 619238b 6879969 f86ef0c f5b7834 f86ef0c 619238b f86ef0c 57d84d6 619238b 57d84d6 f86ef0c 6d82c44 f86ef0c 619238b f86ef0c 8b990bd 5dd7553 8b990bd dcbbf2e 1974db4 5dd7553 f86ef0c 1974db4 f86ef0c 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 95 96 97 98 99 100 101 102 103 104 105 106 107 |
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 = [
"openskyml/dalle-3-xl",
"Linaqruf/animagine-xl-2.0",
"Lykon/dreamshaper-7",
"Linaqruf/animagine-xl",
"runwayml/stable-diffusion-v1-5",
"stabilityai/stable-diffusion-xl-base-1.0",
"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/juggernaut-xl",
"stablediffusionapi/realistic-vision-v51",
"hakurei/waifu-diffusion"
]
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 extend_prompt(input_text):
if not input_text.strip():
gr.Warning("Input text is empty!")
return None
API_URL = f"{API_BASE_URL}Gustavosta/MagicPrompt-Stable-Diffusion"
payload = {"inputs": input_text}
try:
response = requests.post(API_URL, headers=HEADERS, json=payload)
response.raise_for_status()
return response.json()[0].get("generated_text", "")
except requests.exceptions.RequestException as e:
gr.Warning(f"Error in API request: {e}")
return None
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;">
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")
extend_button = gr.Button("Extend Prompt", variant='primary', elem_id="extend-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)
extend_button.click(extend_prompt, inputs=text_prompt, outputs=text_prompt)
playground.launch(show_api=False) |