PHP Manifesto

Développement - le 20 Février 2014 par Mathieu WEBER

Je viens de développer une nouvelle fonction qui m’a bien amusée.

J’étais un peu navré à chaque fois que mon parser HTML ne trouvait pas d’image et que le site affichait mon image grise toute moche par défaut. Souvent je passais du temps à refaire des vignettes pour les re-uploader sur le site et le rendre plus joli. Mais pour les sites de dev, c’est pas toujours évident car il n’y a souvent que du texte.

Du coup je me suis inspiré du graphisme de YOU CAN’T DO SIMPLE MATHS UNDER PRESSURE pour générer une image à base de texte. L’idée c’est de faire matcher les mots dans le carré de façon à ce qu’ils occupent le plus d’espace possible. Les textes sont donc rendus dans différentes taille en fonction de la longueur des mots. Le résultat ressemble un peu au Manifesto, où du moins c’était le but recherché.

J’ai un peu tweaké le code pour ne pas faire qu’un seul mot par ligne, mais agglomérer les mots si ils étaient courts. Le résultat a été plus probant lorsque je suis parti du principe que les mots de la langue anglaise font 4.5 caractères en moyenne, ce qui m’aide à déterminer une longueur de ligne maximale en dessous de laquelle j’agglomère les mots.

Bon il me reste un problème de typo. PHP me donne la taille du texte avec les coordonnées x et y, mais les lettres ne comment pas toutes au 0,0. Le M par exemple est en retrait par rapport au A. Ce qui fait que les mots ne sont pas très bien centrés en fonction de la première lettre du mot. Idem en hauteur pour les accents qui biaisent mes calculs.

Petite démo ici

Je ne sais pas si je passerais encore du temps à améliorer l’algo, car il a déjà un bon rendu pour ce que je veux en faire et je suis un peu à court d’idée il faut dire.

LOVE WHAT YOU DO, DO WHAT YOU LOVE