Accueil > > > BARRES PARAMÉTRABLES EN DÉGRADÉ DE COULEUR ET AVEC TEXTE DANS LA BARRE (PAR EXEMPLE POUR LES RÉSULTATS D'UN SONDAGE)
BARRES PARAMÉTRABLES EN DÉGRADÉ DE COULEUR ET AVEC TEXTE DANS LA BARRE (PAR EXEMPLE POUR LES RÉSULTATS D'UN SONDAGE)
Information sur la source
Description
Une petite fonction de création de barres de couleur (rvb) avec un affichage en dégradé. Je me suis très fortement inspiré de la très bonne source http://www.phpcs.com/codes/DEGRADE_23470.aspx sauf que j'ai remplacé l'appel de la page (avec des passages de variables en GET moyennement sécurisé, hum) par une fonction appelable depuis votre code php, avec par exemple en paramètres, les valeurs résultats d'un sondage, et ajouter la possibilité de mettre un texte en surimpression de l'image. Seule contrainte: il faut activer la librairie GD2 de PHP. (facile à faire sous WAMP ou LAMP)
Source
- function CreateImageFade(
-
- // bar length and height for 100% with a reduction ratio (for example, $percent result of the poll)
- $base_x=550, $ratio_x=100, $base_y=25, $ratio_y=100,
-
- // color 1 for fading source
- $red1, $green1, $blue1,
-
- // color 2 for fading target
- $red2, $green2, $blue2,
-
- // 1 for horizontal fade (direction x), 1 for vertical fade (direction y), 1 for diagonal fade (direction xy)
- $fade_direction,
-
- // text content and size/position parameters
- $text, $text_offset_x, $text_offset_y, $text_size=2,
-
- // image file (format png) to be saved as result
- $path_to_root_file_img, $debug=false) {
- // -----------------------------------------------
- // SOURCES & documentation
- // http://www.phpcs.com/codes/DEGRADE_23470.aspx
-
- // File.extension
- $file_img_bar = $path_to_root_file_img ;
-
- // Init: vérif des min/max des couleurs rvb et ratio
- $red1 = (($red1 <= 255) && ($red1 >= 0))? $red1 : 255 ;
- $green1 = (($green1 <= 255) && ($green1 >= 0))? $green1 : 255 ;
- $blue1 = (($blue1 <= 255) && ($blue1 >= 0))? $blue1 : 255 ;
-
- $red2 = (($red2 <= 255) && ($red2 >= 0))? $red2 : 23 ;
- $green2 = (($green2 <= 255) && ($green2 >= 0))? $green2 : 23 ;
- $blue2 = (($blue2 <= 255) && ($blue2 >= 0))? $blue2 : 230 ;
-
- $ratio_x = (($ratio_x > 0) && ($ratio_x <= 100))? $ratio_x : 5 ;
- $ratio_y = (($ratio_y > 0) && ($ratio_y <= 100))? $ratio_y : 5 ;
-
-
- $c1 = array('r' => $red1, 'v' => $green1, 'b' => $blue1);
- $c2 = array('r' => $red2, 'v' => $green2, 'b' => $blue2);
-
- $bar_x = $ratio_x * $base_x / 100 ;
- $bar_y = $ratio_y * $base_y / 100 ;
-
- switch ($fade_direction) {
- case 1 : $t = $bar_x; break;
- case 2 : $t = $bar_y; break;
- case 3 : $t = $bar_x + $bar_y; break;
- default: $t = $bar_x; break;
- }
-
- // DEBUG
- if ($debug) {
- echo "<br/>DEBUG: long_x = $bar_x, long_y = $bar_y";
- }
-
- // Création de l'image
- $img = imagecreatetruecolor($bar_x, $bar_y);
- $white = imagecolorallocate($img, 255, 255, 255); // couleur du fond
-
- // Dégradé : on dessine une ligne verticale, horizontale ou diagonale pour chaque pixel entre 0 et $t
- for ($i=0; $i < $t ; $i++) {
-
- $r = $c1['r'] + $i * ($c2['r'] - $c1['r']) / $t;
- $v = $c1['v'] + $i * ($c2['v'] - $c1['v']) / $t;
- $b = $c1['b'] + $i * ($c2['b'] - $c1['b']) / $t;
-
- $c = imagecolorallocate($img, $r, $v, $b);
-
- switch ($fade_direction) {
- case 1 : imageline($img, $i, 0, $i, $bar_y, $c); break;
- case 2 : imageline($img, 0, $i, $bar_x, $i, $c); break;
- case 3 : imageline($img, max(0,($i-$bar_y)), min($i,$bar_y), min($i,$bar_x), max(0,($i-$bar_x)), $c); break;
- }
- }
-
- // Ajout du texte
- $white = imagecolorallocate($img, 255, 255, 255); // couleur du texte affiché sur l'image
- imagestring($img, $text_size, $bar_x - $text_offset_x , $bar_y - $text_offset_y , $text , $white);
-
- // Sauvegarde de l'image au format png
- imagepng($img, $file_img_bar);
- imagedestroy($img);
-
- return $file_img_bar;
-
- } /* fin de CreateImageFade */
function CreateImageFade(
// bar length and height for 100% with a reduction ratio (for example, $percent result of the poll)
$base_x=550, $ratio_x=100, $base_y=25, $ratio_y=100,
// color 1 for fading source
$red1, $green1, $blue1,
// color 2 for fading target
$red2, $green2, $blue2,
// 1 for horizontal fade (direction x), 1 for vertical fade (direction y), 1 for diagonal fade (direction xy)
$fade_direction,
// text content and size/position parameters
$text, $text_offset_x, $text_offset_y, $text_size=2,
// image file (format png) to be saved as result
$path_to_root_file_img, $debug=false) {
// -----------------------------------------------
// SOURCES & documentation
// http://www.phpcs.com/codes/DEGRADE_23470.aspx
// File.extension
$file_img_bar = $path_to_root_file_img ;
// Init: vérif des min/max des couleurs rvb et ratio
$red1 = (($red1 <= 255) && ($red1 >= 0))? $red1 : 255 ;
$green1 = (($green1 <= 255) && ($green1 >= 0))? $green1 : 255 ;
$blue1 = (($blue1 <= 255) && ($blue1 >= 0))? $blue1 : 255 ;
$red2 = (($red2 <= 255) && ($red2 >= 0))? $red2 : 23 ;
$green2 = (($green2 <= 255) && ($green2 >= 0))? $green2 : 23 ;
$blue2 = (($blue2 <= 255) && ($blue2 >= 0))? $blue2 : 230 ;
$ratio_x = (($ratio_x > 0) && ($ratio_x <= 100))? $ratio_x : 5 ;
$ratio_y = (($ratio_y > 0) && ($ratio_y <= 100))? $ratio_y : 5 ;
$c1 = array('r' => $red1, 'v' => $green1, 'b' => $blue1);
$c2 = array('r' => $red2, 'v' => $green2, 'b' => $blue2);
$bar_x = $ratio_x * $base_x / 100 ;
$bar_y = $ratio_y * $base_y / 100 ;
switch ($fade_direction) {
case 1 : $t = $bar_x; break;
case 2 : $t = $bar_y; break;
case 3 : $t = $bar_x + $bar_y; break;
default: $t = $bar_x; break;
}
// DEBUG
if ($debug) {
echo "<br/>DEBUG: long_x = $bar_x, long_y = $bar_y";
}
// Création de l'image
$img = imagecreatetruecolor($bar_x, $bar_y);
$white = imagecolorallocate($img, 255, 255, 255); // couleur du fond
// Dégradé : on dessine une ligne verticale, horizontale ou diagonale pour chaque pixel entre 0 et $t
for ($i=0; $i < $t ; $i++) {
$r = $c1['r'] + $i * ($c2['r'] - $c1['r']) / $t;
$v = $c1['v'] + $i * ($c2['v'] - $c1['v']) / $t;
$b = $c1['b'] + $i * ($c2['b'] - $c1['b']) / $t;
$c = imagecolorallocate($img, $r, $v, $b);
switch ($fade_direction) {
case 1 : imageline($img, $i, 0, $i, $bar_y, $c); break;
case 2 : imageline($img, 0, $i, $bar_x, $i, $c); break;
case 3 : imageline($img, max(0,($i-$bar_y)), min($i,$bar_y), min($i,$bar_x), max(0,($i-$bar_x)), $c); break;
}
}
// Ajout du texte
$white = imagecolorallocate($img, 255, 255, 255); // couleur du texte affiché sur l'image
imagestring($img, $text_size, $bar_x - $text_offset_x , $bar_y - $text_offset_y , $text , $white);
// Sauvegarde de l'image au format png
imagepng($img, $file_img_bar);
imagedestroy($img);
return $file_img_bar;
} /* fin de CreateImageFade */
Conclusion
Exemple d'appel de la fonction depuis votre code php:
$text="50% de oui"; $percent=50; $img = CreateImageFade($base_x=550, $ratio_x=$percent, $base_y=25, $ratio_y=100, $red1=230, $green1=230, $blue1=255, $red2=0, $green2=0, $blue2=255, $fade_direction=3, $text, $offset_x= 40, $offset_y=20, $text_size=2, $file_img, $debug=false);
echo '<br/><img src="'. $img . '"/></br>';
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Graphique barre a partir de mysql [ par mrfox ]
Bonsoir, je souhaiterais réaliser un graphique a baton a partir de données extraitent d'une bdd sqlje sais faire les calcul de pourcentage,
generer un graphique grace au resultat d'un sondage [ par agnes05 ]
Je dois generer a partir des resultats obtenu par un formulaire des graphiques mais je ne sais pas trop comment m'y prendre.merci d'avance
creation de graphique [ par agnes05 ]
je narrive pas a faire apparaitre une photos creer avec gd... et mon code n'a pas d'erreur. je crois que le probleme vient de la facon dont je l'appel
Graphique dynamique librairie Artichow [ par aforpien ]
Bonjour à tous, J'essaie de créer un graphique dynamique pour afficher le nombre de requetes par secondes sur une base MYSQL. J'ai d'abord cherché du
réalisation d'une carte graphique de Nouakchott [ par bebeha ]
bonjour tout le monde, je veux réaliser une carte geographique de la capitale Nouakchott (mauritanie) en montrant les lycée en point rouge, et chaque
Je donne un super kit graphique :-) en échange d'une solution pour installer ce kit graphique (thème: "RaisingSun" de chez kit-gaming.org) sur le logiciel Wamp Serveur [ par Rolls512 ]
Bonjour, J'ai acheter un kit graphique sur le site kit-gaming.org (thème RaisingSun) compatible "WebSpell" mais seulement impossible de l'installer,
Graphique [ par eva4 ]
Bonjour, Je souhaiterais intégrer un graphique sur une de mes pages. J'ai des valeurs, $a, $b, $c, $d, $e, $f qui sont des nombres. Je voudrais réa
Afficher statistiqu graphique a laide des variables en php [ par smile88 ]
Bonjour, s.v.p comment afficher les statistiques en graphique a l'aide des variables qui se trouve dans la base de données en php en envoyant des requ
lecture d'un code barre [ par totonyou2007 ]
je cherche un application php que fait la lecteur d'un code barre par un lecteur de code barre
Barre de progression [ par easynoob ]
Bonsoir à tous, J'aurais besoin de faire une barre de progression pour un script exécuter en mode console! Si vous avez des idées ou des suggestions,
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|