Spaces:
Sleeping
Sleeping
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) |