← travaux
Une spirale d'or corail tracée dans un rectangle d'or, sur une grille des tiers, sur fond sombre ; dans la marge, les touches du tri : garder, rejeter, favori.

● projet perso▸ 02Aaoût 2026

Phototriage

rôle
Conception et développement
outils
  • Rust
  • egui
  • eframe
  • wgpu
  • rawler
  • rayon

Le besoin

Je photographie avec un boîtier Olympus, en RAW. Une sortie, ce sont des centaines d'images de 4608 × 3456 pixels, et Lightroom est lent pour le premier tri. Je voulais un outil qui parcoure un dossier aussi vite qu'une visionneuse, qui me laisse décider au clavier, photo après photo, puis comparer les prises d'une même rafale, recadrer, et vérifier la composition, avant d'ouvrir Lightroom.

Trier sans jamais rien perdre

Le mode tri fonctionne comme un « swipe » : flèche droite pour garder, gauche pour rejeter, haut pour les favoris. Rien n'est jamais supprimé : chaque photo est déplacée dans un sous-dossier, et Ctrl+Z la remet à sa place. Les retouches (recadrage, rotation, redressement fin, redimensionnement) écrivent toujours un nouveau fichier à côté de l'original.

Le tri : une photo, trois touches et trois dossiers, _Gardees, _Rejetees et _Favoris, où elle est déplacée sans jamais être supprimée ; Ctrl+Z la remet en place ; les retouches écrivent un nouveau fichier.

Les choix techniques

Rust natif, avec egui/eframe rendu par le GPU (wgpu) : pas de navigateur embarqué, une application qui démarre vite et tient le rythme du clavier. Les RAW sont décodés par rawler, une bibliothèque pure Rust, pour garder des builds simples sous Windows comme sous Linux. Un pool de threads rayon décode en arrière-plan et précharge dans le sens de la lecture, avec un cache mémoire LRU borné en octets et un cache disque de vignettes.

Deux crates : phototriage-core, la logique sans aucune dépendance graphique et testée sans écran (scan, décodage, cache, préchargement, annulation, retouches, guides, analyses) ; et phototriage, l'interface egui (grille, plein écran, tri, comparaison, édition).

egui redessine tout à chaque image ; mêler la logique et l'affichage aurait rendu l'annulation et les déplacements de fichiers impossibles à tester. Toute la logique vit donc dans un crate sans dépendance graphique, couvert par 198 tests, avec une CI Windows et Linux.

Voir la composition

En plein écran, on superpose à la photo 17 guides de composition, chacun avec sa couleur : règle des tiers, grille et spirale d'or, triangle d'or, diagonales, symétries, courbes en S et en C, compositions en T, L et Z, triangles dynamiques, cadrage naturel, espace négatif, plus un quadrillage libre. On les fait pivoter, on les retourne, on règle leur opacité, et on les déplace même hors du cadre.

Quatre des dix-sept guides : la règle des tiers et ses quatre points forts, la spirale d'or, la méthode des diagonales et le triangle d'or.

Aider à voir

Une dernière phase ajoute des aides à la décision : détection du flou (variance du laplacien), regroupement des rafales par heure de prise de vue, histogramme et zébras de surexposition, filtres par ISO, ouverture, vitesse et objectif, et un bandeau de vignettes façon timeline vidéo.

Puis une carte de saillance : où le regard se pose d'abord. Le premier algorithme (Spectral Residual) passait tous les tests, mais se trompait sur de vraies photos. Je l'ai remplacé par un contraste global sur l'histogramme des couleurs (Cheng et al., 2011), pondéré vers le centre. Un mode « premier regard » éteint le reste de l'image, et un parcours du regard numérote les points vus dans l'ordre, par « le gagnant prend tout » et inhibition du retour.

De la photo au parcours du regard : contraste des couleurs sur un histogramme Lab, a priori central, carte de saillance de 128 × 128, puis parcours par le gagnant prend tout et inhibition du retour, dessiné en points numérotés.