File size: 6,217 Bytes
b33feda
725d2cb
 
b33feda
d3ab27a
 
 
 
 
 
 
b33feda
725d2cb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d3ab27a
 
 
 
725d2cb
 
 
 
 
 
 
 
 
 
 
 
 
 
d3ab27a
725d2cb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d3ab27a
725d2cb
d3ab27a
725d2cb
 
 
 
 
 
 
 
 
 
d3ab27a
725d2cb
d3ab27a
725d2cb
 
 
d3ab27a
725d2cb
d3ab27a
725d2cb
 
 
 
d3ab27a
725d2cb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d3ab27a
 
 
 
 
b33feda
725d2cb
 
 
b33feda
725d2cb
d3ab27a
 
 
725d2cb
d3ab27a
 
725d2cb
d3ab27a
 
 
725d2cb
d3ab27a
b33feda
d3ab27a
725d2cb
d3ab27a
 
725d2cb
d3ab27a
725d2cb
 
 
 
 
 
 
 
 
d3ab27a
 
725d2cb
 
d3ab27a
725d2cb
 
 
 
 
 
 
 
 
d3ab27a
 
 
725d2cb
d3ab27a
725d2cb
 
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
import streamlit as st
from PIL import Image
import time

# Configuration de la page
st.set_page_config(
    page_title="Mariam Anglais",
    page_icon="🇬🇧",
    layout="wide",
    initial_sidebar_state="expanded"
)

# --- Fonctions de simulation d'analyse ---
def simulate_analysis_type_1(image):
    """Simule une analyse de type 1."""
    time.sleep(2)  # Simule un traitement
    # Ici, vous ajouteriez le code pour traiter l'image avec le type 1
    st.write("Résultats de l'analyse de type 1 (simulation) :")
    # Exemple : détection d'objets (simulation)
    st.image(image, caption="Image avec détection d'objets (simulation)")
    st.write("Objets détectés : voiture (80%), personne (70%), route (90%)")

def simulate_analysis_type_2(image):
    """Simule une analyse de type 2."""
    time.sleep(3)  # Simule un traitement plus long
    # Ici, vous ajouteriez le code pour traiter l'image avec le type 2
    st.write("Résultats de l'analyse de type 2 (simulation) :")
    # Exemple : analyse de texte (simulation)
    st.image(image, caption="Image avec analyse de texte (simulation)")
    st.write("Texte détecté : 'Welcome to London' (95%)")

# --- CSS Personnalisé ---
st.markdown(
    """
    <style>
    body {
        background-color: #f8f8f8; /* Fond légèrement plus clair */
        font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; /* Police plus moderne */
    }
    /* Titre principal */
    .title {
        color: #2c3e50; /* Bleu foncé */
        text-align: center;
        font-size: 3.5em;
        font-weight: 800;
        padding: 0.5em;
        margin-bottom: 0.5em;
        background-color: #ecf0f1; /* Fond gris clair */
        border-radius: 10px; /* Coins arrondis */
        box-shadow: 3px 3px 5px #888888; /* Ombre légère */
    }
    /* Introduction */
    .intro {
        text-align: center;
        font-size: 1.3em;
        margin-bottom: 2em;
        color: #34495e; /* Gris bleu */
    }
    /* Conteneurs */
    .container {
        background-color: white;
        border-radius: 10px;
        padding: 1.5em;
        margin-bottom: 1em;
        box-shadow: 2px 2px 4px #888888;
    }
    /* Bouton */
    .stButton>button {
        background-color: #007bff; /* Bleu vif */
        color: white;
        padding: 0.8em 1.8em;
        border-radius: 25px; /* Coins très arrondis */
        font-weight: 600;
        font-size: 1.1em;
        transition: all 0.3s ease; /* Transition douce */
    }
    .stButton>button:hover {
        background-color: #0056b3; /* Bleu plus foncé au survol */
        transform: translateY(-2px); /* Léger déplacement vers le haut */
        box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2); /* Ombre plus prononcée au survol */
    }
    /* Uploader de fichiers */
    .stFileUploader {
        padding: 1.5em;
        border: 2px dashed #007bff;
        border-radius: 10px;
    }
    /* Radio buttons */
    .stRadio>div>label {
        font-weight: 600;
        color: #2c3e50;
        font-size: 1.1em;
        padding: 0.5em 0;
    }
    .stRadio>div>label>div>p {
        font-size: 1em; /* Texte descriptif plus petit */
        font-weight: 400;
        color: #34495e;
    }
    /* Spinner */
    .stSpinner {
        text-align: center;
        color: #007bff;
    }
    /* Messages */
    .stSuccess, .stWarning, .stError {
        border-radius: 10px;
        padding: 1em;
        font-weight: 600;
    }
    .stSuccess {
        background-color: #d4edda;
        border-color: #c3e6cb;
        color: #155724;
    }
    .stWarning {
        background-color: #fff3cd;
        border-color: #ffeeba;
        color: #856404;
    }
    /* Pied de page */
    footer {
        text-align: center;
        margin-top: 2em;
        color: #666;
    }
    </style>
    """,
    unsafe_allow_html=True
)

# --- Titre et introduction ---
st.markdown("<div class='title'>✨ Mariam Anglais ✨</div>", unsafe_allow_html=True)
st.markdown("<div class='intro'>Votre plateforme d'analyse d'images intelligente et ultra-réaliste !</div>", unsafe_allow_html=True)

# --- Conteneurs pour une meilleure disposition ---
col1, col2 = st.columns(2)

with col1:
    st.markdown("<div class='container'>", unsafe_allow_html=True)
    # Téléchargement d'images
    uploaded_files = st.file_uploader("Choisissez des images", type=["jpg", "jpeg", "png"], accept_multiple_files=True)
    st.markdown("</div>", unsafe_allow_html=True)

    # Aperçu des images téléchargées
    if uploaded_files:
        st.markdown("<div class='container'>", unsafe_allow_html=True)
        st.write("Aperçu des images :")
        for uploaded_file in uploaded_files:
            st.image(uploaded_file, width=200)
        st.markdown("</div>", unsafe_allow_html=True)

with col2:
    st.markdown("<div class='container'>", unsafe_allow_html=True)
    # Choix du type d'analyse
    analysis_type = st.radio(
        "Choisissez le type d'analyse :",
        (
            "🔍 Type 1: Détection d'objets",
            "🧠 Type 2: Analyse de texte"
        ),
        format_func=lambda x: x.split(":")[1]  # Affiche uniquement la description
    )
    st.markdown("</div>", unsafe_allow_html=True)

    # Bouton de soumission
    st.markdown("<div class='container'>", unsafe_allow_html=True)
    if st.button("🚀 Lancer l'analyse"):
        if uploaded_files:
            st.write("Type d'analyse sélectionné :", analysis_type.split(":")[1])
            with st.spinner(f"Analyse de type {analysis_type.split(':')[0]} en cours..."):
                # Traitement des images
                for uploaded_file in uploaded_files:
                    image = Image.open(uploaded_file)
                    if "Type 1" in analysis_type:
                        simulate_analysis_type_1(image)
                    elif "Type 2" in analysis_type:
                        simulate_analysis_type_2(image)
            st.success("✅ Analyse terminée !")
        else:
            st.warning("⚠️ Veuillez télécharger au moins une image.")
    st.markdown("</div>", unsafe_allow_html=True)

# --- Pied de page ---
st.markdown("<footer>© 2023 Mariam Anglais - Tous droits réservés.</footer>", unsafe_allow_html=True)