Spaces:
Sleeping
Sleeping
File size: 5,129 Bytes
e547b24 5329473 e547b24 919ba89 e547b24 5329473 e547b24 c7e1ae3 6f5a32e e547b24 6f5a32e e547b24 5329473 e547b24 6f5a32e e547b24 6f5a32e e547b24 6f5a32e e547b24 a990e71 5329473 a990e71 5329473 a990e71 5329473 a990e71 5329473 a990e71 5329473 a990e71 5329473 e547b24 c7e1ae3 |
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 |
import gradio as gr
import requests
import io
import random
import os
import time
from PIL import Image
from deep_translator import GoogleTranslator
# Project by Nymbo
API_URL = "https://api-inference.huggingface.co/models/black-forest-labs/FLUX.1-dev"
API_TOKEN = os.getenv("HF_READ_TOKEN")
headers = {"Authorization": f"Bearer {API_TOKEN}"}
timeout = 100
def query(prompt, is_negative=False, steps=30, cfg_scale=7, sampler="DPM++ 2M Karras", seed=-1, strength=0.7):
if not prompt:
return None
key = random.randint(0, 999)
# Detectar el idioma del prompt y traducirlo al ingl茅s
translator = GoogleTranslator(target='en')
try:
prompt = translator.translate(prompt)
except Exception as e:
print(f"Error during translation: {e}")
return None
print(f'\033[1mGeneration {key} translation:\033[0m {prompt}')
prompt = f"{prompt} | ultra detail, ultra elaboration, ultra quality, perfect."
print(f'\033[1mGeneration {key}:\033[0m {prompt}')
payload = {
"inputs": prompt,
"is_negative": is_negative,
"steps": steps,
"cfg_scale": cfg_scale,
"seed": seed if seed != -1 else random.randint(1, 1000000000),
"strength": strength
}
response = requests.post(API_URL, headers=headers, json=payload, timeout=timeout)
if response.status_code != 200:
print(f"Error: Failed to get image. Response status: {response.status_code}")
print(f"Response content: {response.text}")
if response.status_code == 503:
raise gr.Error(f"{response.status_code} : The model is being loaded")
raise gr.Error(f"{response.status_code}")
try:
image_bytes = response.content
image = Image.open(io.BytesIO(image_bytes))
print(f'\033[1mGeneration {key} completed!\033[0m ({prompt})')
return image
except Exception as e:
print(f"Error when trying to open the image: {e}")
return None
css = """
#app-container {
max-width: 600px;
margin-left: auto;
margin-right: auto;
}
input, textarea, select {
background-color: #f5f5f5; /* Fondo gris claro para inputs */
color: #333333; /* Texto gris oscuro en inputs */
border: 1px solid #cccccc; /* Borde gris claro en inputs */
}
button {
background-color: #f5f5f5; /* Fondo gris claro */
color: #333333; /* Texto gris oscuro */
border: 2px solid black; /* Borde negro en botones */
}
button.primary {
background-color: green; /* Fondo verde para el bot贸n 'Generate' */
color: white; /* Texto blanco en el bot贸n 'Generate' */
}
button.secondary {
background-color: #f5f5f5; /* Fondo gris claro para el bot贸n 'Clear' */
color: #333333; /* Texto gris oscuro en el bot贸n 'Clear' */
}
button:hover {
background-color: #e0e0e0; /* Fondo gris m谩s oscuro en hover */
}
h1, h2, h3, h4, h5, h6 {
color: #333333; /* Texto gris oscuro en encabezados */
}
@media (max-width: 768px) {
.button-row {
display: flex;
flex-direction: column;
gap: 10px;
}
}
"""
with gr.Blocks(css=css) as app:
gr.HTML("""
<center>
<h1>Dream Generator with Flux</h1>
<h2>Transforma tus sue帽os en im谩genes vibrantes con un solo clic.</h2>
</center>
""")
with gr.Row():
with gr.Column(scale=1):
text_prompt = gr.Textbox(label="Prompt", placeholder="Enter a prompt here", lines=2, elem_id="prompt-text-input")
negative_prompt = gr.Textbox(label="Negative Prompt", placeholder="What should not be in the image", value="(deformed, distorted, disfigured), poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, (mutated hands and fingers), disconnected limbs, mutation, mutated, ugly, disgusting, blurry, amputation, misspellings, typos", lines=3, elem_id="negative-prompt-text-input")
steps = gr.Slider(label="Sampling steps", value=35, minimum=1, maximum=100, step=1)
cfg = gr.Slider(label="CFG Scale", value=7, minimum=1, maximum=20, step=1)
method = gr.Radio(label="Sampling method", value="DPM++ 2M Karras", choices=["DPM++ 2M Karras", "DPM++ SDE Karras", "Euler", "Euler a", "Heun", "DDIM"])
strength = gr.Slider(label="Strength", value=0.7, minimum=0, maximum=1, step=0.001)
seed = gr.Slider(label="Seed", value=-1, minimum=-1, maximum=1000000000, step=1)
with gr.Row(elem_id="button-row"):
clear_button = gr.Button("Clear", elem_id="clear-button", variant="secondary")
generate_button = gr.Button("Generate", elem_id="generate-button", variant="primary")
with gr.Column(scale=1):
image_output = gr.Image(type="pil", label="Image Output", elem_id="gallery")
generate_button.click(query, inputs=[text_prompt, negative_prompt, steps, cfg, method, seed, strength], outputs=image_output)
def clear_prompt():
return gr.Textbox.update(value="")
clear_button.click(clear_prompt, inputs=[], outputs=text_prompt)
app.launch(show_api=False, share=False)
|