Adapter le favicon à la couleur du site
Comme je bosse presque tout le temps sur BoZoN 3.0, je profite de la récriture complète du code pour y ajouter des fonctions et des améliorations deci delà...
L'une de ces améliorations réside dans la possibilité de changer la couleur de base du thème en ne changeant qu'une variable dans le fichier dédié.
Problème, le favicon n'est plus adapté
Bon, ben on y va alors...
Pour faire simple, je veux coller le logo de l'appli sur un fond de couleur. J'ai donc fait une fonction qui se charge de:
- lire le logo en question
- créer une image avec le fond de la couleur choisie
- superposer le logo
- sauver le tout à la place du favicon.png
La fonction sera appelée depuis le fichier php de chargeant de créer les css à partir des couleurs choisies.
Mais, car il y a un mais, on ne souhaite pas que le favicon soit généré à chaque chargement mais juste dans le cas où on change la couleur du thème...
Fastoche comme tout, il suffit de tester le filemtime du fichier favicon.png et celui de colors.php (qui contient les variables de couleur) et de ne générer le fichier favicon qu'en cas de différence
La fonction, la voilà :
function makeFavIcon($background_color){ # Si on a changé la couleur dans color.php if (filemtime('favicon.png')!=filemtime('colors.php')){ # on charge le logo $logo=imagecreatefrompng ('img/logo.png'); # ça c'est pour la transparence imageAlphaBlending($logo, true); imageSaveAlpha($logo, true);# on crée l'image de fond $fav=imagecreatetruecolor(140,140); imageAlphaBlending($fav, true); imageSaveAlpha($fav, true); # on extrait la couleur (passée en #fff ou #ffffff) preg_match('/#?([a-fA-F0-9]{1,2})([a-fA-F0-9]{1,2})([a-fA-F0-9]{1,2})/',$background_color,$color); if (strlen($color[1])<2){ $color[1]=$color[1].$color[1]; $color[2]=$color[2].$color[2]; $color[3]=$color[3].$color[3]; } $color=array_map("hexdec",$color); $color = ImageColorAllocate ($fav,$color[1],$color[2],$color[3]); # on crée le fond dans la couleur imagefilledrectangle ($fav,0,0,140,140,$color); imagecopy($fav,$logo,0,0,0,0,140,140); # on sauve l'image imagepng($fav, 'favicon.png'); # on libère la mémoire imagedestroy($fav); # on change le filemtime du fichier de couleurs touch('colors.php');
} }
Je la mets sur mon snippetvamp aussi, allez
Tchou !
❝ 3 commentaires ❞
Fil RSS des commentaires de cet article
✍ Écrire un commentaire
les commentaires relevant du SPAM seront filtrés et dégagés direct...