Equityone commited on
Commit
5bfd1e9
·
verified ·
1 Parent(s): 0ae3506

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +181 -72
app.py CHANGED
@@ -433,7 +433,7 @@ class GenerationManager:
433
 
434
  # Modifiez votre fonction create_interface comme ceci
435
  def create_interface():
436
- def create_interface():
437
  logger.info("Création de l'interface Gradio")
438
 
439
  css = """
@@ -444,85 +444,194 @@ def create_interface():
444
  """
445
 
446
  generator = ImageGenerator()
447
- generation_manager = GenerationManager() # Ajout du gestionnaire
448
 
449
  with gr.Blocks(css=css) as app:
450
- # [Gardez toute votre interface existante jusqu'à la fin]
 
 
 
 
 
451
 
452
- # Ajoutez cet onglet à la fin, avant les boutons de génération
453
- with gr.Tab("📜 Historique"):
454
- with gr.Row():
455
- history_gallery = gr.Gallery(
456
- label="Générations Récentes",
457
- columns=3,
458
- height=400,
459
- show_label=True
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
460
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
461
 
462
- with gr.Row():
463
- refresh_btn = gr.Button("🔄 Actualiser")
464
-
465
- # Modification de la fonction generate existante
466
- def generate(*args):
467
- logger.info("Démarrage d'une nouvelle génération")
468
- params = {
469
- "format_size": args[0],
470
- "orientation": args[1],
471
- "style": args[2],
472
- "layout": args[3],
473
- "ambiance": args[4],
474
- "palette": args[5],
475
- "subject": args[6],
476
- "title": args[7],
477
- "detail_level": args[8],
478
- "contrast": args[9],
479
- "saturation": args[10],
480
- "quality": args[11],
481
- "creativity": args[12]
482
- }
483
- result = generator.generate(params)
484
 
485
- # Ajout de la sauvegarde automatique
486
- if result[0] is not None:
487
- generation_manager.save_generation(result[0], params)
 
488
 
489
- logger.info(f"Génération terminée avec statut: {result[1]}")
490
- return result
491
-
492
- def refresh_history():
493
- recent = generation_manager.get_recent_generations()
494
- return gr.Gallery.update(value=[entry["image_path"] for entry in recent])
495
 
496
- # Connexion des boutons
497
- generate_btn.click(
498
- generate,
499
- inputs=[
500
- format_size,
501
- orientation,
502
- style,
503
- layout,
504
- ambiance,
505
- palette,
506
- subject,
507
- title,
508
- detail_level,
509
- contrast,
510
- saturation,
511
- quality,
512
- creativity
513
- ],
514
- outputs=[image_output, status]
515
- )
516
-
517
- refresh_btn.click(
518
- refresh_history,
519
- outputs=[history_gallery]
520
- )
521
-
522
- clear_btn.click(
523
- lambda: (None, "🗑️ Image effacée"),
524
- outputs=[image_output, status]
525
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
526
 
527
  logger.info("Interface créée avec succès")
528
  return app
 
433
 
434
  # Modifiez votre fonction create_interface comme ceci
435
  def create_interface():
436
+ def create_interface():
437
  logger.info("Création de l'interface Gradio")
438
 
439
  css = """
 
444
  """
445
 
446
  generator = ImageGenerator()
447
+ generation_manager = GenerationManager()
448
 
449
  with gr.Blocks(css=css) as app:
450
+ gr.HTML("""
451
+ <div class="welcome">
452
+ <h1>🎨 Equity Artisan 3.0</h1>
453
+ <p>Assistant de création d'affiches professionnelles</p>
454
+ </div>
455
+ """)
456
 
457
+ with gr.Column(elem_classes="container"):
458
+ # Format et Orientation
459
+ with gr.Group(elem_classes="controls-group"):
460
+ gr.Markdown("### 📐 Format et Orientation")
461
+ with gr.Row():
462
+ format_size = gr.Dropdown(
463
+ choices=["A4", "A3", "A2", "A1", "A0"],
464
+ value="A4",
465
+ label="Format"
466
+ )
467
+ orientation = gr.Radio(
468
+ choices=["Portrait", "Paysage"],
469
+ value="Portrait",
470
+ label="Orientation"
471
+ )
472
+
473
+ # Style et Composition
474
+ with gr.Group(elem_classes="controls-group"):
475
+ gr.Markdown("### 🎨 Style et Composition")
476
+ with gr.Row():
477
+ style = gr.Dropdown(
478
+ choices=list(ART_STYLES.keys()),
479
+ value="Art Moderne",
480
+ label="Style artistique"
481
+ )
482
+ layout = gr.Dropdown(
483
+ choices=list(COMPOSITION_PARAMS["Layouts"].keys()),
484
+ value="Centré",
485
+ label="Composition"
486
+ )
487
+
488
+ with gr.Row():
489
+ ambiance = gr.Dropdown(
490
+ choices=list(COMPOSITION_PARAMS["Ambiances"].keys()),
491
+ value="Dramatique",
492
+ label="Ambiance"
493
+ )
494
+ palette = gr.Dropdown(
495
+ choices=list(COMPOSITION_PARAMS["Palette"].keys()),
496
+ value="Contrasté",
497
+ label="Palette"
498
+ )
499
+
500
+ # Contenu
501
+ with gr.Group(elem_classes="controls-group"):
502
+ gr.Markdown("### 📝 Contenu")
503
+ subject = gr.Textbox(
504
+ label="Description",
505
+ placeholder="Décrivez votre vision..."
506
+ )
507
+ title = gr.Textbox(
508
+ label="Titre",
509
+ placeholder="Titre de l'affiche..."
510
  )
511
+
512
+ # Ajustements fins
513
+ with gr.Group(elem_classes="advanced-controls"):
514
+ gr.Markdown("### 🎯 Ajustements Fins")
515
+ with gr.Row():
516
+ detail_level = gr.Slider(
517
+ minimum=1,
518
+ maximum=10,
519
+ value=7,
520
+ step=1,
521
+ label="Niveau de Détail"
522
+ )
523
+ contrast = gr.Slider(
524
+ minimum=1,
525
+ maximum=10,
526
+ value=5,
527
+ step=1,
528
+ label="Contraste"
529
+ )
530
+ saturation = gr.Slider(
531
+ minimum=1,
532
+ maximum=10,
533
+ value=5,
534
+ step=1,
535
+ label="Saturation"
536
+ )
537
+
538
+ # Paramètres de génération
539
+ with gr.Group(elem_classes="controls-group"):
540
+ with gr.Row():
541
+ quality = gr.Slider(
542
+ minimum=30,
543
+ maximum=50,
544
+ value=35,
545
+ label="Qualité"
546
+ )
547
+ creativity = gr.Slider(
548
+ minimum=5,
549
+ maximum=15,
550
+ value=7.5,
551
+ label="Créativité"
552
+ )
553
+
554
+ # Historique
555
+ with gr.Tab("📜 Historique"):
556
+ with gr.Row():
557
+ history_gallery = gr.Gallery(
558
+ label="Générations Récentes",
559
+ columns=3,
560
+ height=400,
561
+ show_label=True
562
+ )
563
 
564
+ with gr.Row():
565
+ refresh_btn = gr.Button("🔄 Actualiser")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
566
 
567
+ # Boutons
568
+ with gr.Row():
569
+ generate_btn = gr.Button("✨ Générer", variant="primary")
570
+ clear_btn = gr.Button("🗑️ Effacer", variant="secondary")
571
 
572
+ image_output = gr.Image(label="Aperçu")
573
+ status = gr.Textbox(label="Statut", interactive=False)
 
 
 
 
574
 
575
+ # Fonctions
576
+ def generate(*args):
577
+ logger.info("Démarrage d'une nouvelle génération")
578
+ params = {
579
+ "format_size": args[0],
580
+ "orientation": args[1],
581
+ "style": args[2],
582
+ "layout": args[3],
583
+ "ambiance": args[4],
584
+ "palette": args[5],
585
+ "subject": args[6],
586
+ "title": args[7],
587
+ "detail_level": args[8],
588
+ "contrast": args[9],
589
+ "saturation": args[10],
590
+ "quality": args[11],
591
+ "creativity": args[12]
592
+ }
593
+ result = generator.generate(params)
594
+
595
+ if result[0] is not None:
596
+ generation_manager.save_generation(result[0], params)
597
+
598
+ logger.info(f"Génération terminée avec statut: {result[1]}")
599
+ return result
600
+
601
+ def refresh_history():
602
+ recent = generation_manager.get_recent_generations()
603
+ return gr.Gallery.update(value=[entry["image_path"] for entry in recent])
604
+
605
+ # Events
606
+ generate_btn.click(
607
+ generate,
608
+ inputs=[
609
+ format_size,
610
+ orientation,
611
+ style,
612
+ layout,
613
+ ambiance,
614
+ palette,
615
+ subject,
616
+ title,
617
+ detail_level,
618
+ contrast,
619
+ saturation,
620
+ quality,
621
+ creativity
622
+ ],
623
+ outputs=[image_output, status]
624
+ )
625
+
626
+ refresh_btn.click(
627
+ refresh_history,
628
+ outputs=[history_gallery]
629
+ )
630
+
631
+ clear_btn.click(
632
+ lambda: (None, "🗑️ Image effacée"),
633
+ outputs=[image_output, status]
634
+ )
635
 
636
  logger.info("Interface créée avec succès")
637
  return app