Le logiciel de tri de photos

Bonjour à tous,

Dans mon dernier article, j’ai décrit la réalisation matérielle et logicielle 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ées Xmp.Rating du fichier lui-même. Pour celles-ci, l’image est redimensionnée, recadrée et automatiquement transférée sur le cadre. Ce script est déjà fonctionnel.

Donc yapluka parcourir mes images et, pour chacune d’elles, lui associer 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 des photos. Cela peut se traduire par les fonctionnalités suivantes :

  • Afficher chaque image entourée des images précédentes et suivantes pour déterminer en un coup d’œil si elle a des jumelles.
  • Dans ce cas, pouvoir zoomer sur des détails afin de choisir la meilleure variante.
  • 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 ce tag pour afficher l’image de manière adaptée, mais pas tous (c’est par exemple le cas de 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 connais rien aux interfaces graphiques pour ordinateur, 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 cela me convient tout à fait. 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 qualité d’une image étant nombreux (Exif.Rating, Exif.RatingPercent, Xmp.Rating, Xmp.MicrosoftPhoto.Rating), les propriétés autres que Exif.Rating sont supprimés lors de la modification de la note d’une photo.

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

N’hésitez pas à me faire signe si ce logiciel vous est utile !

Laisser un commentaire

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