Cette année, j'ai pris le temps d'être mentor dans le programme Google Summer of Code.
Chaque année, Google paie des étudiants pour qu'ils passent leur été à développer des logiciels libres. L'an dernier, Drupal a eu 11 projets étudiants, et nous en avons aussi tiré des développeurs vraiment extraordinaires. (C'est de toi que je parle, webchick *g*)
J'ai actuellement une proposition SoC en ligne, et c'est un projet qui me tient beaucoup à cœur. Je parle bien sûr d'une véritable couche d'intégration avec l'exécutable ImageMagick.
Une meilleure description de ce que cela rendrait possible, après le saut :
Ce qui suit est une démonstration toute simple de la puissance de ce module imagemagick, s'il reste assez simple.
Prenez le thème que j'utilise. Il s'appelle Leaf. De tous les thèmes portés, je pense que c'est celui que je préfère, mais que dois-je faire si je veux le personnaliser?
Leaf contient les images suivantes :
Je simplifie toutefois pour les besoins de l'exemple. Chacune de ces images finales pourrait être reconstruite avec le module imagemagick, et toute la conception du site pourrait changer au choix de l'utilisateur.
C'est très simple de créer une feuille de style CSS qui contient en fait du PHP (un gabarit de style) et qui vous permet de manipuler les couleurs et les images vers lesquelles la feuille de style pointe. Dans ce cas, il suffirait de choisir une seule couleur (le bas du dégradé), et le haut du dégradé serait 33 % plus foncé que le haut. Nous avons déjà un superbe sélecteur de couleur écrit par Steven Wittens, que j'ai converti en élément FAPI.
Un exemple concret de cela est le générateur d'en-têtes Kubrick pour WordPress. Il utilise exactement la même fonctionnalité côté serveur, mais dans ce cas-ci, n'importe quel développeur de thème peut fournir la recette pour configurer son thème.
Comme vous pouvez le voir, l'image d'en-tête a déjà toute une série d'images de rechange, mais ce n'est pas si complexe non plus. Elle comporte trois couches : l'arrière-plan, qui est identique au haut du dégradé, le contenu, qui peut être n'importe quelle image de banque, et la bordure. En choisissant une nouvelle couleur de thème, vous modifiez la couche du bas.
Vous pourriez aussi choisir de modifier la couche du milieu, comme on le voit dans Kubrickr, encore une fois pour WordPress. Kubrickr a la particularité d'aller chercher des images sur Flickr, mais un module de style bien écrit pourrait aller chercher des images n'importe où. Des images téléversées, des images sur Flickr, des images jointes au nœud que vous consultez (pourquoi ne pas mettre la photo principale de l'article directement dans la mise en page du site, comme le fait tv.com pour chacune de ses sections d'émissions?).
La couche du bas est recréée simplement en combinant la couche des coins arrondis blancs avec la couleur que vous avez choisie au départ.
Une fonction vraiment intéressante, et en fait pas si difficile à implémenter, serait de trouver des photos proches de la couleur choisie dans le sélecteur de couleur, comme on peut le voir avec Flickr ColrPickr.
De plus, pourquoi ne pas faire l'inverse et analyser un logo ou une image de banque téléversés pour essayer d'en tirer de bons agencements de couleurs (note : il faudra fort probablement quelques ajustements manuels *g*).
Le plus beau de tout ça, c'est que grâce à la magie d'AJAX, il n'y aurait même pas besoin de recharger la page. Ce pourrait être écrit de façon à ce que tout se passe sous vos yeux. Ce n'est pas le genre de fonction que j'activerais pour des milliers d'utilisateurs sur du matériel limité, mais c'est quand même formidable d'avoir cette possibilité =)
Voilà le genre de fonctions que nous sommes sur le point de pouvoir offrir dans Drupal, si seulement nous avions la base stable d'un module ImageMagick bien développé sur laquelle bâtir. ImageMagick est une bête puissante, et si nous réussissons à « drupaliser » une part suffisante de ses fonctions, nous pourrions construire des choses vraiment extraordinaires avec lui.
Mise à jour : J'ai trouvé cet outil DHTML de recadrage et de redimensionnement d'images, dont je voulais aussi mettre le lien ici : Speeding Rhino. Ce serait parfait comme interface pour recadrer des images.