Besoin d'une base de données pour afficher des images ?

Depuis le début de ce blog autogéré, j'utilisais le logiciel Gallery pour gérer des albums photos en ligne. Mon cahier des charges de l'époque m'avait naturellement orienté vers lui car je cherchais quelquechose d'assez fonctionnel mais surtout qui ne demandait pas de mettre en place un serveur de base de données. Effectivement, l'affichage d'une image sur un site web nécéssite avant tout un serveur Web qui transmet un fichier à un client; le fichier étant une image. Le client qui le reçoit présente le fichier sous forme d'image. C'est très bien comme ça !

Toutefois, l'idée d'utiliser une base de données pour fournir des fichiers ne me semble pas forcément pertinente dans mon cas d'utilisation. En effet, j'ai peu de ressources, tant en CPU/RAM qu'en espace disque. Un serveur de base de données qui tourne en tâche de fond, uniquement pour "servir" des fichiers d'images, c'est autant de ressources perdues. Voilà pourquoi j'avais pris la version 1 de Gallery qui ne nécéssite "que" l'utilisation de SQLite, c'est à dire, une base de données sous forme de fichier. Cette solution était un compromis acceptable mais pas parfait et avec quelques défauts. D'abord, il me fallait installer tout un tas de bibliothèques pour faire fonctionner PHP5, Imagemagick, etc... Autant de trous de sécurité ou de place de perdue. Ensuite, l'application est assez ancienne et pas forcément très belle. Enfin, sa gestion était exclusive: toute son administration était déconnectée du reste du système du serveur et au final, je passais plus de temps à retrouver le mot de passe du compte d'administration de Gallery qu'à poser des photos !

Il n'y a pas si longtemps, je suis tombé, par hasard, sur un article de Michal Čihař du Planet Debian qui mentionnait Lazygal, un générateur de galerie statique en Python.

J'aime Python (quelle déclaration !). C'est un langage assez simple à apprendre et il est facile et plaisant de développer avec lui, surtout lorsqu'on regarde la richesse de ses bibliothèques. D'ailleurs, le moteur du blog que j'utilise (PyBlosxom) est un script Python. De plus, lazygal est très léger, il n'a pas à être installé sur le serveur (ce qui dans mon cas est tout bénef) et surtout, il permet de faire des choses assez belles, simples et légères. Cerise sur le gateau, lazygal fait partie de Debian (je crois qu'il est développé uniquement sous Debian).

C'est donc avec un vif intérêt que je me suis penché sur ce logiciel. La prise en main est assez facile. Concrètement, il s'agit de lancer le script avec quelques paramètres. Le reste se fait automagiquement. Les seuls éléments que j'ai dû modifier sont les feuilles de styles des pages HTML générées. Pour la gestion des commentaires, j'ai utilisé exiv2 qui permet d'intégrer un commentaire dans les données Exif des photos. Ainsi, les fichiers transportent avec eux leurs commentaires et je n'ai plus à les gérer à part (dans une base de données ?). Après quelques tatonnement, on trouve facilement ses marques.

Grâce à lazygal, je peux conserver mes images, les présenter rapidement sans passer des heures à les charger dans l'application (sur serveur) puis à faire les commentaires et à gérer les options: tout se fait en un seul appel, sur une machine locale, sans appel au réseau. Bref, Lazygal, c'est bon, c'est léger, c'est simple, mangez-en !

PS: Vous pouvez admirer le résultat sur ce blog en allant ici. Le CSS va changer car il est moche mais, ce sera pour plus tard !