PHP Artichow Missing imageantialias
// avril 15th, 2010 // 6 Comments » // Informatique

Vectoris a pu experimenter Artichow, qui je le rapelles est une librairie de génération de graphes avec php_gd. Il s’est avéré qu’il y avait plusieurs autres solutions, en Flash, en JQuery … voir Artichow pour des graphes statistiques en PHP.
Ce qui est sympa avec Artichow, c’est que les erreurs sont bien et “joliment” présentés. Voici, plus haut, une de celles que vous pourrez rencontrer en l’utilisant. “Missing imageantialias() function. Check your PHP installation”. Rencontré sur PHP 5.2 avec Artichow 1.0.9.
Le réflexe : faire un phpinfo() pour vérifier si php_gd est bien là. Mais voilà, il y est, le problème est ailleurs. Il se trouve que cette fonction n’est disponible que si PHP est installé avec la version embarquée de la bibliothèque GD. Si vous utilisez une version pré-compilée, dans mon cas, php5-gd, ça ne marchera pas.
A rappeler que l’anti-alias ou anticrénelage, en français, est un procédé qui enlève les pixelisations sur les textes. Plus d’info sur Wikipedia, Anticrénelage.
“Ahh, tête posée, effectivement, c’est évident”. On va désactiver ça, il y a justement une méthode … :
$graph->setAntiAliasing(false);
“Ah, zut, c’est toujours pas OK …”
Votre raisonnement est juste. En fait, c’est celle de la méthode qui est fausse. Allons la voir, dans le fichier inc/drivers/gd.class.php :
if(function_exists('imageantialias')) { imageantialias($this->resource, (bool)$bool); $this->antiAliasing = (bool)$bool; } else { awImage::drawErrorFile('missing-anti-aliasing'); }
Même si on désactive l’anti-alias, tant que la fonction n’existe pas, on a toujours l’erreur. Mais si on est en train de la désactiver, c’est justement qu’on a pas besoin, non ? Pour résoudre, faites un elseif, a la place du else, en testant la valeur de paramètre reçu par la méthode :
} elseif($bool==true) {
Ce code est plus juste, non ? D’ailleurs, vous venez de résoudre votre problème. J’espère que les développeurs Artichow corrigeront ça pour les prochaines versions …
Sinon, si vous y tenez à ce Anti-alias, il faudra recompiler PHP avec GD que vous trouverez surement à coup de Google. Ou bien … je ne sais pas si il y a moyen de remplacer le fichier gd.so sauvagement dans /usr/lib/php5/ …





