Enoder commited on
Commit
e1a87e3
·
verified ·
1 Parent(s): bed0e18

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +63 -58
app.py CHANGED
@@ -1,60 +1,65 @@
1
  import streamlit as st
2
  import numpy as np
3
- import matplotlib.pyplot as plt
4
- from PIL import Image, ImageDraw
5
-
6
- # Fonction pour générer une image simple et stylisée d'un animal
7
- def generate_animal_image(animal):
8
- img_size = (300, 300)
9
- image = Image.new("RGB", img_size, (255, 255, 255))
10
- draw = ImageDraw.Draw(image)
11
-
12
- # Paramètres pour dessiner chaque animal
13
- if animal == "Chat":
14
- # Corps du chat (cercle simple + oreilles)
15
- draw.ellipse((50, 100, 250, 300), fill=(200, 160, 200), outline="black")
16
- draw.polygon([(80, 100), (100, 60), (120, 100)], fill=(200, 160, 200), outline="black") # Oreille gauche
17
- draw.polygon([(180, 100), (200, 60), (220, 100)], fill=(200, 160, 200), outline="black") # Oreille droite
18
-
19
- elif animal == "Chien":
20
- # Corps du chien (forme ovale + oreilles pendantes)
21
- draw.ellipse((50, 100, 250, 300), fill=(160, 100, 60), outline="black")
22
- draw.rectangle([(60, 60), (100, 120)], fill=(160, 100, 60), outline="black") # Oreille gauche
23
- draw.rectangle([(200, 60), (240, 120)], fill=(160, 100, 60), outline="black") # Oreille droite
24
-
25
- elif animal == "Cheval":
26
- # Corps du cheval (corps allongé + oreilles en pointe)
27
- draw.rectangle([(80, 150), (220, 300)], fill=(120, 70, 50), outline="black")
28
- draw.polygon([(100, 150), (110, 100), (130, 150)], fill=(120, 70, 50), outline="black") # Oreille gauche
29
- draw.polygon([(170, 150), (180, 100), (200, 150)], fill=(120, 70, 50), outline="black") # Oreille droite
30
-
31
- return image
32
-
33
- # Initialisation de l'interface Streamlit
34
- st.title("Générateur d'Images d'Animaux")
35
-
36
- # Variables de session pour stocker l'état des images générées
37
- if "animal_image" not in st.session_state:
38
- st.session_state.animal_image = None
39
-
40
- # Boutons pour sélectionner l'animal
41
- col1, col2, col3 = st.columns(3)
42
- with col1:
43
- if st.button("Chat"):
44
- st.session_state.animal_image = generate_animal_image("Chat")
45
-
46
- with col2:
47
- if st.button("Chien"):
48
- st.session_state.animal_image = generate_animal_image("Chien")
49
-
50
- with col3:
51
- if st.button("Cheval"):
52
- st.session_state.animal_image = generate_animal_image("Cheval")
53
-
54
- # Affichage de l'image générée
55
- if st.session_state.animal_image:
56
- st.image(st.session_state.animal_image, caption="Image Générée", use_column_width=False, width=300)
57
-
58
- # Bouton de réinitialisation
59
- if st.button("Réinitialiser", key="reset", help="Cliquez pour générer une nouvelle image"):
60
- st.session_state.animal_image = None
 
 
 
 
 
 
1
  import streamlit as st
2
  import numpy as np
3
+ import time
4
+ import random
5
+
6
+ # Fonction simulée pour générer une "image" aléatoire sous forme de matrice de pixels
7
+ def generate_random_image_data():
8
+ return np.random.randint(0, 256, (300, 300, 3), dtype=np.uint8)
9
+
10
+ # Fonction pour extraire les "caractéristiques" d'une image (simulation)
11
+ def extract_image_features(image_data):
12
+ avg_color = np.mean(image_data, axis=(0, 1))
13
+ feature_description = f"Moyenne de couleur RGB: ({int(avg_color[0])}, {int(avg_color[1])}, {int(avg_color[2])})"
14
+ return feature_description
15
+
16
+ # Initialisation de session
17
+ if "feedback" not in st.session_state:
18
+ st.session_state["feedback"] = []
19
+ if "don_data" not in st.session_state:
20
+ st.session_state["don_data"] = ""
21
+ if "auto_run" not in st.session_state:
22
+ st.session_state["auto_run"] = True
23
+
24
+ # Interface Streamlit
25
+ st.title("Générateur d'images unique avec feedback")
26
+
27
+ # Boutons d'animaux
28
+ animal = st.radio("Choisissez un animal", ["Chat", "Chien", "Cheval"])
29
+
30
+ # Génération d'une "image" aléatoire chaque 3 secondes (sans API ni stockage d'image)
31
+ if st.session_state["auto_run"]:
32
+ image_data = generate_random_image_data()
33
+ st.image(image_data, caption=f"Image générée pour {animal}", use_column_width=True)
34
+
35
+ # Extraction de "caractéristiques" de l'image (simulation)
36
+ feature_description = extract_image_features(image_data)
37
+ st.write("Caractéristiques extraites de l'image :")
38
+ st.write(feature_description)
39
+
40
+ # Boutons de feedback
41
+ col1, col2 = st.columns(2)
42
+ if col1.button("Oui"):
43
+ st.session_state["feedback"].append({"animal": animal, "features": feature_description})
44
+ st.write("Feedback positif enregistré.")
45
+ elif col2.button("Non"):
46
+ st.write("Feedback négatif : L'image ne correspond pas.")
47
+
48
+ # Bouton pour enregistrer les données extraites (texte seulement)
49
+ if st.button("Enregistrer"):
50
+ st.session_state["don_data"] += feature_description + "\n"
51
+ st.write("Caractéristiques de l'image sauvegardées.")
52
+
53
+ # Champs de texte pour le don manuel de données
54
+ if st.button("Don"):
55
+ with st.form("form_don"):
56
+ don_data = st.text_area("Entrez les données manuellement", value=st.session_state["don_data"])
57
+ if st.form_submit_button("Envoyer"):
58
+ st.session_state["don_data"] = don_data
59
+ st.write("Données ajoutées avec succès.")
60
+ st.session_state["auto_run"] = False # Arrête l'auto-génération si le don est activé
61
+
62
+ # Relance automatique toutes les 3 secondes si le bouton "Don" n'a pas été utilisé
63
+ if st.session_state["auto_run"]:
64
+ time.sleep(3)
65
+ st.experimental_rerun()