Spaces:
Runtime error
Runtime error
File size: 4,912 Bytes
8ccf632 81b26b5 06f0278 2927cdb 06f0278 8ccf632 4ea3b6f 8ccf632 2927cdb 8ccf632 06f0278 8ccf632 2927cdb 8ccf632 2927cdb 54192f0 8ccf632 2927cdb 8ccf632 2927cdb 8ccf632 2927cdb 8ccf632 2927cdb 8ccf632 2927cdb 8ccf632 2927cdb 8ccf632 2927cdb 8ccf632 2927cdb 8ccf632 2927cdb 8ccf632 2927cdb 8ccf632 2927cdb 8ccf632 2927cdb 8ccf632 2927cdb 8ccf632 2b62414 2927cdb 8ccf632 2927cdb |
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 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
import gradio as gr
import numpy as np
import random
import spaces
import torch
from diffusers import DiffusionPipeline
# Load the model
dtype = torch.bfloat16
device = "cuda" if torch.cuda.is_available() else "cpu"
pipe = DiffusionPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", torch_dtype=dtype).to(device)
# Constants
MAX_SEED = np.iinfo(np.int32).max
MAX_IMAGE_SIZE = 2048
# Inference function
@spaces.GPU()
def infer(
prompt,
seed=42,
randomize_seed=False,
width=1024,
height=1024,
num_inference_steps=4,
progress=gr.Progress(track_tqdm=True),
):
if randomize_seed:
seed = random.randint(0, MAX_SEED)
generator = torch.Generator().manual_seed(seed)
image = pipe(
prompt=prompt,
width=width,
height=height,
num_inference_steps=num_inference_steps,
generator=generator,
guidance_scale=0.0
).images[0]
return image, seed
# Example prompts
examples = [
"A heroic adventurer wielding a flaming sword standing on a cliff overlooking a burning battlefield",
"A grand mystical library with ancient scrolls and a floating blue orb in the center of the room",
"A menacing dragon perched on a mountain peak as storm clouds gather around",
]
# Custom CSS for a Dungeons & Dragons theme
css = """
body {
background-color: #1b1b1b;
font-family: 'Cinzel', serif; /* Fantasy-style font */
color: #f5f5f5;
background-image: url('https://www.transparenttextures.com/patterns/dark-matter.png'); /* Subtle texture for a medieval touch */
}
#col-container {
margin: 0 auto;
max-width: 550px;
padding: 15px;
border: 4px solid #8b4513;
background: linear-gradient(145deg, #2e2b2a, #3a3433); /* Rustic parchment feel */
border-radius: 15px;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.8);
}
h1, h2 {
text-align: center;
color: #ffd700;
font-family: 'Uncial Antiqua', serif; /* Ancient script-like font */
text-shadow: 3px 3px #7c5200; /* Glow effect for magical appeal */
}
button {
background-color: #8b4513;
border: none;
color: #f0e6d2;
padding: 12px 20px;
border-radius: 8px;
cursor: pointer;
font-size: 18px;
text-shadow: 1px 1px #000;
transition: all 0.3s ease;
}
button:hover {
background-color: #a0522d;
box-shadow: 0 0 10px #ffd700;
}
"""
# Interface
with gr.Blocks(css=css) as demo:
with gr.Column(elem_id="col-container"):
# Title and Description
gr.Markdown(
"""
# 🛡️ ChatDnD.net Dungeons & Dragons Image Generator ⚔️
**Unleash Your Imagination!** Create heroes, maps, quests, and epic scenes to bring your campaigns to life.
Tailored for adventurers seeking inspiration or Dungeon Masters constructing their next grand story. <br>
[Visit Our Website](https://chatdnd.net) | [Support Us](https://buymeacoffee.com/watchoutformike)
"""
)
# Prompt input and run button
with gr.Row():
prompt = gr.Textbox(
label="🎲 Enter Your Quest:",
lines=3,
placeholder="Describe your scene, hero, or epic landscape..."
)
run_button = gr.Button("Generate Image")
# Results
result = gr.Image(label="🖼️ Your Legendary Vision")
# Advanced settings
with gr.Accordion("⚙️ Advanced Settings", open=False):
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=MAX_IMAGE_SIZE,
step=32,
value=1024,
)
height = gr.Slider(
label="Height",
minimum=256,
maximum=MAX_IMAGE_SIZE,
step=32,
value=1024,
)
num_inference_steps = gr.Slider(
label="Number of Inference Steps",
minimum=1,
maximum=50,
step=1,
value=4,
)
# Examples
gr.Examples(
examples=examples,
inputs=[prompt],
outputs=[result],
fn=infer,
cache_examples="lazy",
)
# Interactivity
gr.on(
triggers=[run_button.click, prompt.submit],
fn=infer,
inputs=[prompt, seed, randomize_seed, width, height, num_inference_steps],
outputs=[result, seed]
)
# Launch the demo
demo.launch()
|