Le logiciel de tri de photos

Dans mon dernier article, j’ai décrit la réalisation de mon cadre photo numérique. J’en suis ravi, mais pour en profiter pleinement, je dois le garder à jour : pendant trop longtemps, j’ai vu défiler des images dont les plus récentes dataient de plusieurs mois voire des années. Mais sélectionner les meilleurs clichés parmi des milliers est une tâche suffisamment décourageante pour la remettre à toujours plus tard, surtout lorsque les moyens pour le faire ne sont pas très ergonomiques.

Pourtant, j’ai déjà préparé le terrain pour simplifier l’opération : après chaque sauvegarde de mon PC sur le serveur, un script parcourt ma collection de photos à la recherche d’images bien notées, en se basant sur la méta-donnée Xmp.Rating du fichier lui-même. Ces images-là sont ensuite automatiquement redimensionnées, recadrées et transférées sur le cadre.

Donc il n’y a plus qu’à reprendre toute ma photothèque et associer à chaque image une note comprise entre 1 et 5. Il est possible de le faire directement depuis l’explorateur Windows, mais l’opération est fastidieuse. Ce serait beaucoup plus simple grâce à un logiciel dédié ;-).

Vous me voyez venir ? J’ai donc réalisé un petit outil, sans prétention, afin de répondre à mes propres besoins. Il n’est peut-être pas beau, mais il est efficace, et c’est tout ce que je lui demande.

Fonctionnalités attendues

Ce logiciel doit ne faire qu’une seule chose, mais doit la faire au mieux : me faire gagner du temps lors du tri de mes photos. Cela peut se traduire par les fonctionnalités suivantes :

  • Afficher chaque image accompagnée de celle qui la précède et celle qui la suit pour déterminer en un coup d’œil si elle a des jumelles (photo prise en double).
  • Pouvoir zoomer sur des détails afin de choisir la meilleure variante. En particulier, pouvoir passer à la photo suivante ou précédente en conservant la position du zoom entre les images. C’est très utile pour comparer des détails entre différents clichés.
  • Appliquer une note de 1 à 5 par un seul appui sur une touche du clavier et passer automatiquement à l’image suivante.
  • De même, pouvoir supprimer une image depuis le clavier, sans confirmation, et passer à l’image suivante.

J’estime que ce mode de de fonctionnement répond le mieux à mes besoins. Une analyse un peu plus approfondie précise le scénario d’usage :

  • Au démarrage, le répertoire contenant les photos est demandé. Les sous-répertoires sont inclus.
  • Optionnellement, les images peuvent être automatiquement pivotées. En effet, les appareils photos récents possèdent une capteur d’inclinaison qui enregistre l’orientation de l’image dans les méta-données. Certains logiciels sont capables de lire cette méta-donnée pour afficher l’image de manière adaptée, mais pas tous (par exemple la visionneuse de photos de Windows 7). Ainsi, pour ces derniers, il est nécessaire de modifier la photo elle-même pour qu’elle soit enregistrée “dans le bon sens”. J’utilise depuis longtemps le logiciel JPEG Autorotate à cet effet, mais autant inclure cette fonction à mon programme afin qu’il se suffise à lui-même.
  • L’écran principal est composé de l’image courante jouxtée par les images précédente et suivante. Il est possible de double-cliquer sur une image pour l’afficher en plein écran. Ensuite, les double-clics suivants permettent de zoomer et dézoomer, tout comme la molette de la souris. Maintenir le clic en bougeant le curseur permet de se déplacer dans l’image. Pour terminer, la touche Echap permet de revenir au mode normal.
  • Les flèches du clavier gauche et droite permettent de faire défiler les images. Si un zoom est réalisé sur une partie de l’image courante et que l’image suivante a la même définition, alors le même zoom est effectué sur la même portion de l’image suivante. Cela est utile pour comparer un détail entre deux clichés.
  • La touche Suppr du clavier permet de supprimer l’image sans confirmation. Elle n’est pas immédiatement supprimée du système, mais l’extension “.suppr” est rajoutée à son nom de fichier. Pour les supprimer définitivement, il ne reste plus qu’à trier par type les fichiers du répertoire de supprimer les images qui portent cette extension.
  • Les touches 1 à 5 ou de A à E permettent de noter l’image affichée, puis le logiciel passe alors à l’image suivante.

Comme je ne maîtrise pas de langage de programmation permettant de créer des logiciels avec une interface graphique, j’ai choisi d’utiliser Processing pour écrire mon programme. C’est l’écosystème Arduino qui me l’a fait découvrir : son IDE est basé sur celui de Processing, et le “langage” Arduino partage de nombreuses similitudes avec le sien.

Attention, j’ai mis “langage” entre guillemets car ce ne sont pas des langages spécifiques : Processing repose sur Java tandis qu’Arduino est basé sur du C++. Toutefois, les couches d’abstraction apportées sont telles font qu’à première vue, ils n’ont plus grand-chose à voir avec leur langage d’origine. Plus d’infos sur la page Wikipedia de Processing ici.

Bref, c’est un bon moyen pour les débutants d’arriver rapidement à leurs fins et je suis exactement dans ce cas. De plus, il est possible d’exécuter ce programme grâce à la machine virtuelle Java, ce qui le rend multi-plateforme.

Contrairement à mes autres articles, je peux difficilement expliciter le cheminement qui m’a conduit au résultat. Passons donc directement aux captures d’écran. Le lien de téléchargement est disponible en bas de l’article, il contient l’exécutable pour Windows ainsi que le code source sous licence libre.

Première étape au lancement du programme, le choix du répertoire de travail. Les sous-répertoires sont inclus :

Une fois le répertoire choisi, une message demande s’il est nécessaire de pivoter les photos. Comme c’est une opération qui peut être relativement longue, je préfère laisser le choix, d’autant plus qu’une fois réalisée, il n’est pas nécessaire de la répéter :

Après avoir cliqué sur “Oui”, chaque fichier comportant l’extension “.JPG” (insensible à la casse) est fourni à l’utilitaire jhead qui s’occupe de la rotation automatique. Il repose lui-même sur le programme jpegtran qui réalise la rotation sans perte de qualité. Les binaires pour Windows de ces outils sont fournis dans le répertoire data/, mais je ne me suis pas occupé de la gestion des autres plate-forme. Si certains d’entre vous en ont besoin sous Linux, je pourrais m’y pencher. Aucune barre de progression n’indique pour le moment l’évolution du traitement, ce serait éventuellement à rajouter dans une version ultérieure.

On arrive alors sur l’écran principal. En dessous de chaque image, les étoiles jaunes indiquent leur note, de 1 à 5, d’après le champ Xmp.Rating :

En mode plein écran, tout le superflu est éliminé :

Le chargement d’images lourdes peut prendre jusqu’à plusieurs secondes, aussi, les images précédentes et suivantes sont préchargées en tâche de fond de façon à ce que le défilement entre les images soit le plus fluide possible. Toutefois, seules les images immédiatement précédente et suivante étant préchargées, il n’est malheureusement pas possible de faire défiler rapidement plusieurs images de suite sans ralentissement.

Les champs permettant de stocker la note d’une image étant nombreux (Exif.Rating, Exif.RatingPercent, Xmp.Rating, Xmp.MicrosoftPhoto.Rating), les méta-données autres que Exif.Rating sont supprimés et la note choisie est enregistrée dans ce dernier champ.

C’est tout pour le moment. Vous pouvez télécharger le code source et l’exécutable pour Windows ici (82Mo).

Il resterait toutefois un certain nombre d’améliorations à réaliser :

  • Ajouter une barre de progression lors de la rotation des photos au début du programme,
  • Afficher une icône qui permet de savoir si le logiciel travaille en tâche de fond pour précharger l’images précédente ou suivante. En effet, dans ce cas, des ralentissement apparaissent. Cela permettrait donc de la anticiper.
  • Faire un fonction “visionneuse” qui permet, pour chaque répertoire, d’afficher des miniatures et le nombre de photo concernées par chaque note. Le but est de rapidement savoir quelles sont les dossier déjà triés de ceux qui ne le sont pas.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *