= 2) { // for at least 3 colors $GradientSizeRed = (hexdec(substr($endcol, 0, 2)) - $RedOrigin) / $graduations; //Graduation Size Red $GradientSizeGrn = (hexdec(substr($endcol, 2, 2)) - $GrnOrigin) / $graduations; $GradientSizeBlu = (hexdec(substr($endcol, 4, 2)) - $BluOrigin) / $graduations; for ($i = 0; $i <= $graduations; $i++) { $RetVal[$i] = strtoupper("#" . str_pad(dechex($RedOrigin + ($GradientSizeRed * $i)), 2, '0', STR_PAD_LEFT) . str_pad(dechex($GrnOrigin + ($GradientSizeGrn * $i)), 2, '0', STR_PAD_LEFT) . str_pad(dechex($BluOrigin + ($GradientSizeBlu * $i)), 2, '0', STR_PAD_LEFT)); } } elseif ($graduations == 1) { // exactlly 2 colors $RetVal[] = $from_color; $RetVal[] = $to_color; } else { // one color $RetVal[] = $from_color; } return $RetVal; } public static function hex2rgb($hex) { return sscanf($hex, "#%02x%02x%02x"); } // --- // --- Local fonctions // --- public static function rgb2hex($rgb) { $hex = "#"; $hex .= str_pad(dechex($rgb[0]), 2, "0", STR_PAD_LEFT); $hex .= str_pad(dechex($rgb[1]), 2, "0", STR_PAD_LEFT); $hex .= str_pad(dechex($rgb[2]), 2, "0", STR_PAD_LEFT); return $hex; // returns the hex value including the number sign (#) } } function getGDcolorGradientArray($vImage, $nb_colors, $couleurRGB, $fondRGB, $alpha = 0) { $vColor = array(); // Calculer un gradient de couleurs $hex1 = ColorGradient::rgb2hex($couleurRGB); $hex2 = ColorGradient::rgb2hex([255,255,255]); if ($hex2 == ColorGradient::rgb2hex($fondRGB)) $hex2 = ColorGradient::rgb2hex([0,0,0]); $hex_val = array( $hex1, $hex2 ); $gradient = ColorGradient::gradient($hex_val[0], $hex_val[1], $nb_colors); // Pour chaque couleur, on rajoute deux informations // - un pourcentage // - une couleur GD for($i=0;$i<$nb_colors;$i++) { $rgbval = ColorGradient::hex2rgb($gradient[$i]); $vColor[$i] = new ColorGradient(); $vColor[$i]->pct = ($i * 1.0) / $nb_colors; $vColor[$i]->color = imagecolorallocatealpha($vImage, $rgbval[0], $rgbval[1], $rgbval[2], $alpha); } return $vColor; } ?>