Spaces:
Sleeping
Sleeping
File size: 5,469 Bytes
e547b24 919ba89 e547b24 5db9fa6 e547b24 c7e1ae3 6f5a32e e547b24 6f5a32e e547b24 5db9fa6 e547b24 6f5a32e e547b24 6f5a32e e547b24 6f5a32e e547b24 a990e71 5db9fa6 a990e71 5db9fa6 a990e71 5db9fa6 a990e71 5db9fa6 a990e71 5db9fa6 a990e71 5db9fa6 a990e71 5db9fa6 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 |
import gradio as gr
import requests
import io
import random
import os
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, width=1024, height=1024):
if prompt == "" or prompt is None:
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,
"width": width,
"height": height
}
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;
background-color: #ffffff; /* Fondo blanco */
color: #333333; /* Texto gris oscuro */
}
input, textarea, select {
background-color: #f5f5f5; /* Fondo gris claro para inputs */
color: #333333; /* Texto gris oscuro en inputs */
border: 1px solid #333333; /* Borde negro en inputs */
}
button {
background-color: #28a745; /* Fondo verde */
color: #ffffff; /* Texto blanco en botones */
border: 1px solid #333333; /* Borde negro en botones */
border-radius: 4px; /* Bordes redondeados */
}
button:hover {
background-color: #218838; /* Verde oscuro en hover */
}
h1 {
color: #333333; /* Texto gris oscuro en h1 */
}
h2 {
color: #333333; /* Texto gris oscuro en h2 */
}
"""
with gr.Blocks(css=css) as app:
gr.HTML("<center><h1>Generador de Sueños con Flux</h1></center>")
gr.HTML("<center><h2>Transforma tus sueños en imágenes vibrantes con un solo clic.</h2></center>")
with gr.Column(elem_id="app-container"):
with gr.Row():
with gr.Column():
text_prompt = gr.Textbox(label="Prompt", placeholder="Introduce un prompt aquí", lines=2, elem_id="prompt-text-input")
with gr.Accordion("Opciones avanzadas", open=False):
negative_prompt = gr.Textbox(label="Prompt Negativo", placeholder="Qué no debería aparecer en la imagen", 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="Pasos de muestreo", value=35, minimum=1, maximum=100, step=1)
cfg = gr.Slider(label="Escala CFG", value=7, minimum=1, maximum=20, step=1)
method = gr.Radio(label="Método de muestreo", value="DPM++ 2M Karras", choices=["DPM++ 2M Karras", "DPM++ SDE Karras", "Euler", "Euler a", "Heun", "DDIM"])
strength = gr.Slider(label="Fuerza", value=0.7, minimum=0, maximum=1, step=0.001)
seed = gr.Slider(label="Semilla", value=-1, minimum=-1, maximum=1000000000, step=1)
image_size = gr.Dropdown(
label="Tamaño de Imagen",
choices=[
"4:3 (1024x768 px)",
"16:9 (1920x1080 px)",
"1:1 (1080x1080 px)",
"1:1 (500x500 px)",
"9:16 (720x1280 px)",
"9:16 (1080x1920 px)"
],
value="16:9 (1920x1080 px)"
)
with gr.Column():
with gr.Row():
generate_button = gr.Button("Generar", elem_id="generate-button", variant="primary")
with gr.Row():
image_output = gr.Image(type="pil", label="Imagen de Salida", elem_id="gallery")
generate_button.click(query, inputs=[text_prompt, negative_prompt, steps, cfg, method, seed, strength, image_size], outputs=image_output)
app.launch(show_api=False, share=False)
|