Update app.py
Browse files
app.py
CHANGED
|
@@ -67,9 +67,9 @@ COMPOSITION_PARAMS = {
|
|
| 67 |
"Asymétrique": "dynamic asymmetrical composition",
|
| 68 |
"Grille": "grid-based layout, structured composition",
|
| 69 |
"Diagonal": "diagonal dynamic composition",
|
| 70 |
-
"Minimaliste": "minimal composition with lots of whitespace",
|
| 71 |
# Nouvelles options ajoutées
|
| 72 |
-
|
| 73 |
'En Z': "'Z-shaped' composition guiding the viewer's eye",
|
| 74 |
'Règle des tiers': "'rule of thirds' composition for balance",
|
| 75 |
'Symétrie': "'symmetrical' composition for mirror-like balance",
|
|
@@ -214,70 +214,70 @@ def create_interface():
|
|
| 214 |
</div>
|
| 215 |
""")
|
| 216 |
|
| 217 |
-
|
| 218 |
-
|
| 219 |
-
|
| 220 |
-
|
| 221 |
-
|
| 222 |
-
|
| 223 |
-
|
| 224 |
-
|
| 225 |
-
|
| 226 |
-
|
| 227 |
-
|
| 228 |
-
|
| 229 |
-
|
| 230 |
|
| 231 |
-
|
| 232 |
-
|
| 233 |
-
|
| 234 |
-
|
| 235 |
-
|
| 236 |
-
|
| 237 |
-
|
| 238 |
-
|
| 239 |
|
| 240 |
-
|
| 241 |
-
|
| 242 |
-
|
| 243 |
-
|
| 244 |
|
| 245 |
-
|
| 246 |
-
|
| 247 |
-
|
| 248 |
-
|
| 249 |
-
maximum=10,
|
| 250 |
-
value=7,
|
| 251 |
-
step=1,
|
| 252 |
-
label="Niveau de Détail")
|
| 253 |
-
contrast = gr.Slider(minimum=1,
|
| 254 |
maximum=10,
|
| 255 |
-
value=
|
| 256 |
step=1,
|
| 257 |
-
label="
|
| 258 |
-
|
| 259 |
-
|
| 260 |
-
|
| 261 |
-
|
| 262 |
-
|
| 263 |
-
|
| 264 |
-
|
| 265 |
-
|
| 266 |
-
|
| 267 |
-
|
| 268 |
-
value=35,
|
| 269 |
-
label="Qualité")
|
| 270 |
-
creativity = gr.Slider(minimum=5,
|
| 271 |
-
maximum=15,
|
| 272 |
-
value=7.5,
|
| 273 |
-
label="Créativité")
|
| 274 |
|
|
|
|
| 275 |
with gr.Row():
|
| 276 |
-
|
| 277 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 278 |
|
| 279 |
-
|
| 280 |
-
|
| 281 |
|
| 282 |
def generate(*args):
|
| 283 |
logger.info("Démarrage d'une nouvelle génération")
|
|
|
|
| 67 |
"Asymétrique": "dynamic asymmetrical composition",
|
| 68 |
"Grille": "grid-based layout, structured composition",
|
| 69 |
"Diagonal": "diagonal dynamic composition",
|
| 70 |
+
"Minimaliste": "'minimal composition with lots of whitespace'",
|
| 71 |
# Nouvelles options ajoutées
|
| 72 |
+
'Radial': "'radial' composition with circular arrangement",
|
| 73 |
'En Z': "'Z-shaped' composition guiding the viewer's eye",
|
| 74 |
'Règle des tiers': "'rule of thirds' composition for balance",
|
| 75 |
'Symétrie': "'symmetrical' composition for mirror-like balance",
|
|
|
|
| 214 |
</div>
|
| 215 |
""")
|
| 216 |
|
| 217 |
+
with gr.Column(elem_classes="container"):
|
| 218 |
+
with gr.Group(elem_classes="controls-group"):
|
| 219 |
+
gr.Markdown("### 📐 Format et Orientation")
|
| 220 |
+
with gr.Row():
|
| 221 |
+
format_size = gr.Dropdown(choices=["A4",
|
| 222 |
+
A3",
|
| 223 |
+
A2",
|
| 224 |
+
A1",
|
| 225 |
+
A0"],
|
| 226 |
+
value="A4", label="Format")
|
| 227 |
+
orientation = gr.Radio(choices=["Portrait",
|
| 228 |
+
Paysage"],
|
| 229 |
+
value="Portrait", label="Orientation")
|
| 230 |
|
| 231 |
+
with gr.Group(elem_classes="controls-group"):
|
| 232 |
+
gr.Markdown("### 🎨 Style et Composition")
|
| 233 |
+
with gr.Row():
|
| 234 |
+
style = gr.Dropdown(choices=list(ART_STYLES.keys()), value="Neo Vintage", label="Style artistique")
|
| 235 |
+
layout = gr.Dropdown(choices=list(COMPOSITION_PARAMS["Layouts"].keys()), value="Centré", label="Composition")
|
| 236 |
+
with gr.Row():
|
| 237 |
+
ambiance = gr.Dropdown(choices=list(COMPOSITION_PARAMS["Ambiances"].keys()), value="Dramatique", label="Ambiance")
|
| 238 |
+
palette = gr.Dropdown(choices=list(COMPOSITION_PARAMS["Palette"].keys()), value="Contrasté", label="Palette")
|
| 239 |
|
| 240 |
+
with gr.Group(elem_classes="controls-group"):
|
| 241 |
+
gr.Markdown("### 📝 Contenu")
|
| 242 |
+
subject = gr.Textbox(label="Description", placeholder="Décrivez votre vision...")
|
| 243 |
+
title = gr.Textbox(label="Titre", placeholder="Titre de l'affiche...")
|
| 244 |
|
| 245 |
+
with gr.Group(elem_classes="advanced-controls"):
|
| 246 |
+
gr.Markdown("### 🎯 Ajustements Fins")
|
| 247 |
+
with gr.Row():
|
| 248 |
+
detail_level = gr.Slider(minimum=1,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 249 |
maximum=10,
|
| 250 |
+
value=7,
|
| 251 |
step=1,
|
| 252 |
+
label="Niveau de Détail")
|
| 253 |
+
contrast = gr.Slider(minimum=1,
|
| 254 |
+
maximum=10,
|
| 255 |
+
value=5,
|
| 256 |
+
step=1,
|
| 257 |
+
label="Contraste")
|
| 258 |
+
saturation = gr.Slider(minimum=1,
|
| 259 |
+
maximum=10,
|
| 260 |
+
value=5,
|
| 261 |
+
step=1,
|
| 262 |
+
label="Saturation")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 263 |
|
| 264 |
+
with gr.Group(elem_classes="controls-group"):
|
| 265 |
with gr.Row():
|
| 266 |
+
quality = gr.Slider(minimum=30,
|
| 267 |
+
maximum=50,
|
| 268 |
+
value=35,
|
| 269 |
+
label="Qualité")
|
| 270 |
+
creativity = gr.Slider(minimum=5,
|
| 271 |
+
maximum=15,
|
| 272 |
+
value=7.5,
|
| 273 |
+
label="Créativité")
|
| 274 |
+
|
| 275 |
+
with gr.Row():
|
| 276 |
+
generate_btn = gr.Button("✨ Générer", variant="primary")
|
| 277 |
+
clear_btn = gr.Button("🗑️ Effacer", variant="secondary")
|
| 278 |
|
| 279 |
+
image_output = gr.Image(label="Aperçu")
|
| 280 |
+
status = gr.Textbox(label="Statut", interactive=False)
|
| 281 |
|
| 282 |
def generate(*args):
|
| 283 |
logger.info("Démarrage d'une nouvelle génération")
|