Soyez le premier à donner votre avis sur cette source.
Snippet vu 5 262 fois - Téléchargée 17 fois
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 */
11 janv. 2010 à 20:54
3 janv. 2010 à 00:08
Parmi les améliorations possibles, je citerai par exemple une interface admin pour ajuster les couleurs et dimensions des barres selon votre site, sans tâtonner manuellement dans l'ajustement des paramètres.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.