Ajoute une carte de propriétés au-dessus de l'image :
- Dimensions (largeur × hauteur), format, mode couleur, résolution DPI
- Données EXIF complètes si présentes (appareil, exposition, ISO, focale,
balance des blancs, auteur, copyright…)
- Coordonnées GPS avec lien OpenStreetMap si le champ est renseigné
Nouvelle fonction _image_meta() et _parse_gps() dans app.py (Pillow).
Grille CSS responsive, n'apparaît pas si aucune métadonnée disponible.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Route POST /rename : renomme un fichier CDN avec validation sécurité,
retourne JSON (name, path, browse_url)
- Route /resize : accepte param `conflict` (backup | overwrite | rename | skip)
backup → renomme l'existant en {stem}_bak_{timestamp}{ext} avant création
rename → auto-incrémente le nom de la copie ({stem}_1, _2…)
overwrite → écrase silencieusement
skip → ignore (signalé dans les erreurs)
- browse.html : bouton ✏️ par fichier, renommage inline avec Entrée/Échap
- preview_image.html : bouton ✏️ dans l'en-tête, champ inline + redirect
après validation ; radio segmenté pour la stratégie de conflit
- app.css : styles btn-rename, rename-inline, radio-chips segmentés
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Ajoute une carte interactive sous chaque aperçu d'image permettant de
générer des copies redimensionnées directement dans le même dossier CDN.
- Route POST /resize avec Pillow (PNG, JPG, ICO) et cairosvg optionnel (SVG)
- Tailles disponibles : 32, 64, 100, 128, 200, 300, 500, 600, 1024 px (carré)
- Formats : png, jpg, ico (svg uniquement si la source est déjà SVG)
- Nommage automatique : {nom}_{taille}x{taille}.{ext}
- UI chips cliquables, soumission AJAX, retour avec liens directs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Ajoute la route POST /upload (admin uniquement) et la zone de dépôt
dans browse.html — glisser-déposer ou sélection multiple, destination
= dossier courant du navigateur.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>