ColorLib PHP - Générateur de légendes et dégradés de couleur php (beta)

Principe :

La librairie ColorLib PHP est composée de quattre fonctions php permettant de générer facilement et rapidement des légendes de couleurs et dégradés de teintes en php. En effet, l'affichage de données météo est plus lisible lorsque ces données sont colorisées que ça soit pour une carte ou pour un tableau de données de températures ou précipitations comme dans ce tableau : Noaa Template 2 ou cette carte de températures : carte de températures.La plupart du temps les webmasters choisissent manuellement chaque tranche de couleur en utilisant des logiciels tels que Photoshop ou Gimp. Mais ce travail est souvent long et laborieux. Nous avons donc créé plusieurs fonctions php bien pratiques permettant d'obtenir rapidement de nombreuses couleurs, et même de générer des légendes dynamiques avec des millions de teintes possibles, le calcul de la teinte s'effectuant "à la volée" en fonction de la valeur numérique entrée, après avoir paramétré quelques couleurs dominantes.

Accès rapide aux fonctions :

Documentation :

getMidColors - Obtenir les couleurs intermédiaires d'un dégradé entre deux teintes

fonction - getMidColors ( string $rgb_string_1 , string $rgb_string_2 , int $nb_of_new_colors )

Supposons que l'on veut créer une légende très simplifiée pour un tableau représentant les précipitaitons avec des couleurs allant du blanc RGB(255,255,255) au bleu foncé RGB(9,66,134), et que l'on voudrai obtenir 15 couleurs intermédiaires afin de les associées à des quantités de pluie différentes.On utilise donc la fonction getMidColors() de la façon suivante:


<?php 

require_once "colorlib.php";

$blanc "255,255,255";
$bleu "9,66,134";

$legende getMidColors($blanc,$bleu,15);

?>

La fonction va retourner le résultat sous la forme d'un tableau php avec la liste des couleurs obtenues. Si on fait donc un print_r($legende), voici le résultat :

Array
(
    [1] => 240,243,247
    [2] => 224,231,240
    [3] => 209,220,232
    [4] => 194,208,225
    [5] => 178,196,217
    [6] => 163,184,210
    [7] => 147,172,202
    [8] => 132,161,195
    [9] => 117,149,187
    [10] => 101,137,179
    [11] => 86,125,172
    [12] => 71,113,164
    [13] => 55,101,157
    [14] => 40,90,149
    [15] => 24,78,142
)

Voici ce que donne le résultat visuellement en terme de couleur :

blanc
de départ
bleu
d'arrivée

Code d'affichage de l'exemple ci-dessus : [+]


adMidColors - Ajouter les couleurs intermédiares à une liste de teintes prédéfinies

fonction - adMidColors ( array $array_rgb_strings , int $nb_of_new_colors or array $array_nb_colors_by_steps )

Cette fonction est plus complète que la précédente car elle permet de gérer les dégradés de plusieurs teintes à la fois à partir d'une liste de couleurs définies dans un tableau php. Prenons un exemple concret, imaginons que l'on veut améliorer notre légende des précipitations (ci-dessus) en ajoutant différentes teintes telles que le vert clair , le violet , et le rouge (afin d'avoir des cartes ou tableaux de données plus lisibles); on va stocker ces différentes couleurs souhaitées dans une variable tableau.

Une fois que l'on a définit nos 5 teintes dominantes, nous avons plus qu'à ajouter les couleurs intermédiaires du dégradé en utilisant la fonction adMidColors(). on peut paramétrer le nombre de couleur intermédiaires comme dans la fonction getMidColors(). ici nous allons ajouter 12 couleurs par tranche :


<?php
require_once "colorlib.php";

$colors = array(
"255,255,255",
"77,255,167",
"0,0,255",
"253,32,214",
"200,20,20"
);

$legende adMidColors($colors,12); 
 
?>

La fonction va renvoyer le tableau complèté des nouvelles teintes. Si on fait un print_r($legende), voici le résultat :

Array
(
    [0] => 255,255,255
    [1] => 241,255,248
    [2] => 228,255,241
    [3] => 214,255,235
    [4] => 200,255,228
    [5] => 187,255,221
    [6] => 173,255,214
    [7] => 159,255,208
    [8] => 145,255,201
    [9] => 132,255,194
    [10] => 118,255,187
    [11] => 104,255,181
    [12] => 91,255,174
    [13] => 77,255,167
    [14] => 71,235,174
    [15] => 65,216,181
    [16] => 59,196,187
    [17] => 53,177,194
    [18] => 47,157,201
    [19] => 41,137,208
    [20] => 36,118,214
    [21] => 30,98,221
    [22] => 24,78,228
    [23] => 18,59,235
    [24] => 12,39,241
    [25] => 6,20,248
    [26] => 0,0,255
    [27] => 19,2,252
    [28] => 39,5,249
    [29] => 58,7,246
    [30] => 78,10,242
    [31] => 97,12,239
    [32] => 117,15,236
    [33] => 136,17,233
    [34] => 156,20,230
    [35] => 175,22,227
    [36] => 195,25,223
    [37] => 214,27,220
    [38] => 234,30,217
    [39] => 253,32,214
    [40] => 249,31,199
    [41] => 245,30,184
    [42] => 241,29,169
    [43] => 237,28,154
    [44] => 233,27,139
    [45] => 229,26,124
    [46] => 224,26,110
    [47] => 220,25,95
    [48] => 216,24,80
    [49] => 212,23,65
    [50] => 208,22,50
    [51] => 204,21,35
    [52] => 200,20,20
)

Voici ce que donne le résultat en terme de couleur :

Code d'affichage de l'exemple ci-dessus : [+]

Bien que le résultat soit prometteur, il semble qu'il y'ai trop de couleurs dans les tons de vert clair, ce qui ne va pas être pratique pour notre légende des précipitations, d'autant que celle-ci ne sera pas forcément proportionnelle.N'ayez crainte, nous pouvons paramétrer le nombre de couleurs à ajouter pour chaque tranche; il suffit en effet de fournir un tableau php avec comme valeurs le nombre de teintes souhaité :


<?php
require_once "colorlib.php";

$colors = array(
"255,255,255",
"77,255,167",
"0,0,255",
"253,32,214",
"200,20,20"
);

$colors_inter = array(
3,
8,
12,
10,
7,
7
);

$legende adMidColors($colors,$colors_inter);
  
?>

Le résultat :

Une autre version de dégradé obtenu pour une légende de températures par exemple :

Code d'affichage de l'exemple pour la température ci-dessus : [+]


getColor - Calculer une couleur à la volée en fonction d'une valeur - résolution et précision illimitées

fonction - getColor ( decimal $var , array $array_value_as_color )

La fonction la plus puissante de notre bibliothèque Colorlib. En effet, cette fonction permet d'obtenir une couleur calculée à la volée à partir d'une valeur numérique, après avoir paramétré les principales teintes pour certaines valeurs dans un tableau php.

Reprenons l'exemple d'une légende pour un tableau de températures, et que l'on veut avoir une précision maximale, il suffit de paramétrer un tableau php avec comme clés quelques températures de -15°C à +30°C, et comme valeurs les teintes associées.

Avec la fonction Getcolor() , on peut alors récupèrer la couleur correspondant à n'importe quelle valeur de température. Par exemple pour 12°C :


<?php

require_once "colorlib.php";

$colors = array(
"-15"=>"198,9,120",
"-10"=>"34,43,221",
"0"=>"101,247,232",
"10"=>"255,255,0",
"20"=>"255, 0 , 0",
"30"=>"176, 80, 21"
);

$color getColor(12,$colors);

?>

Pour mieux se rendre compte des capacités de calcul de la fonction, rien ne vaut mieux qu'un exemple visuel dans lequel nous allons calculer et afficher les couleurs de toutes les températures :

-15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Code d'affichage du tableau ci-dessus : [+]

Nous aurions pu aussi afficher une précision au dixième de degré pour la température. En fait la précision et la résolution des couleurs obtenues a pour seule limite le nombre de couleur disponibles dans la palette RGB (donc plusieurs millions)

D'ailleurs cette fonction est aussi utile pour dessiner des dégradés sur les images en php, par le biais de la librairie GD. Il suffit de mettre comme clés des valeurs de pixels par exemple :

degradé couleur php

Code d'affichage de l'exemple d'image dégradée ci-dessus : [+]


Cette documentation touche à sa fin et nous espèrons que la libraire ColorLib PHP sera utile à de nombreux webmasters et développeurs. Si vous avez des questions ou si vous rencontrez des problèmes avec l'utilisation des fonctions, rendez vous sur notre forum dans la rubrique programmation web.

Gestion des couleurs en hexadécimal :

Il est possible d'utiliser les fonctions de création de dégradés décrites ci-dessus avec des couleurs de la forme hexadécimal. Pour celà, il faut utiliser la fonction convertColor() présentée sur cette page : convertir couleur php

Evolutions prévues :