Bloc-notes de Sylvain

Générer une mosaïque sous Linux en ligne de commande

Depuis quelques mois je passe pas mal de temps à développer le site https://boites-a-livres.fr qui vise à proposer une interface simple des boîtes à livres de France métropolitaine à partir des données disponibles sur OpenStreetMap et à profiter de cette interface pour inciter les gens à apporter leurs connaissances sur le sujet, que je reverse ensuite sur OpenStreetMap (et Wikimedia Commons pour les photos).

Bref, aujourd'hui on a passé la barre des 6000 boîtes à livres présentes dans la base. Pour fêter ça j'ai voulu générer une mosaïque sur la base de photos de boîtes à livres prises au hasard. L'opération a été relativement simple avec deux outils linux : imagemagick (bien connu) et montage (que je ne connaissais pas avant de m'attaquer à cette question). Pour mémoire (j'espère reprendre ce script dans quelques temps pour fêter les 7000 boîtes dans la base !), les opérations sont :

  1. génération des vignettes au format carré, centrées sur le milieu de l'image et avec une taille harmonisée.
for file in *.jpg; do
  convert "$file" -resize "256x256^" -gravity center -extent 256x256 "${file%.jpg}_square.jpg"
done
  1. création d'une mosaïque à partir de ces images
    montage -mode concatenate -tile 15x15 *_square.jpg output.jpg

Attention, il faut avoir assez d'images, ici pour un montage de 15 x 15 : 225 images. Si vous n'en avez pas assez et voulez en répéter certaines de manières aléatoires, des copier / coller en masse pour dupliquer les images, puis une génération de noms de fichiers aléatoires tel que proposé ici devrait faire le job.

  1. Admirer le résultat

6000