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 ❞

1  ErikaVarro1 le

Je vous remercie pour cet information, cela tombe bien pour moi !!!

 
2  SARL VERDANET EID le

Bonjour,


Votre domaine et votre hébergement "semblent" ou alors c'est volontaire, peut importe, violer totalement notre propriété intellectuelle.


Je vous laisse constater :


http://respawn.warriordudimanche.net/?public&publicget=2015-07-25-09-05-58


Votre niveau général en dev Web ne vous servirai pas en cas de recours juridique, puisque vous aviez tout simplement a vérifier vos lien sortant pour le voir.


Vous avez donc 48h pour régler de problème faute de quoi non seulement nous démarrons une procédure juridique mais en plus nous demanderons réparation .


Je vous remercie d'avance.


Emeric

 
3  Emeric Verdanet le

Dernier avertissement aujourd'hui.


Demain j’appelle les avocat et il faudra payer pour leur honoraires , au minimum.

 

Fil RSS des commentaires de cet article

✍ Écrire un commentaire

les commentaires relevant du SPAM seront filtrés et dégagés direct...

Quelle est le premier caractère du mot rjw52q6k ?