Tema: gradientes
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/04/2005, 08:42
Avatar de caricatos
caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
gradientes

Hola amigos:


Escribo para compartir un script para poner fondos degradados:

Código:
 <?php
header("Content-Type: image/png"); 
function elColor($color) {
 $red = 256 * 256;
 $green = 256;
 $blue = 1;
 return ($red * $color[0]) + ($green * $color[1]) + ($blue * $color[2]);
}
function losColores($arrayColores) {
 $devolver = array();
 for ($i = 0; $i < count($arrayColores); $i ++)
  $devolver[$i] = elColor($arrayColores[$i]);
 return $devolver;
}
function desglose($fondo) {
 return array(hexdec($fondo[1]),hexdec($fondo[2]),hexdec($fondo[3]));
}
function rgbColor($fondo) {
 $red = 100;
 $green = 100;
 $blue = 100;
 if( eregi( "([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})", $fondo, $retornar ) )
  return $retornar;
 else
  return array($fondo, $red, $green, $blue);
}
function transitar($color1, $color2, $pasos) {
 $devolver = array();
 $pasos--;
 $devolver[0] = desglose(rgbColor($color1));
 $devolver[$pasos] = desglose(rgbColor($color2));
 $rIni = $devolver[0][0];
 $gIni = $devolver[0][1];
 $bIni = $devolver[0][2];
 $rFin = $devolver[$pasos][0];
 $gFin = $devolver[$pasos][1];
 $bFin = $devolver[$pasos][2];
 $rMed = ($rFin - $rIni) / $pasos;
 $gMed = ($gFin - $gIni) / $pasos;
 $bMed = ($bFin - $bIni) / $pasos;
 for ($i = 1; $i < $pasos; $i ++) {
  $devolver[$i] = array($rIni + round($rMed * $i), $gIni + round($gMed * $i), $bIni + round($bMed * $i));
 }
 return losColores($devolver);
}
if (isset($_GET["anchura"])) $anchura = $_GET["anchura"];
else $anchura = 100;
$altura = 1;
if (isset($_GET["color1"])) $color1 = $_GET["color1"];
else $color1 = "000123";
if (isset($_GET["color2"])) $color2 = $_GET["color2"];
else $color2 = "ffabcd";
$fondo1 = desglose(rgbColor($color1));
$fondo2 = desglose(rgbColor($color2));
$transito = transitar($color1, $color2, $anchura);
$destino = ImageCreateTrueColor($anchura, $altura);
//$destino = ImageCreate($anchura, $altura);
for ($i = 0; $i < count($transito); $i ++)
 ImageSetPixel($destino, $i, 0, $transito[$i]);
@imagepng($destino);
Imagedestroy($destino);
?>
En esta página se puede ver el funcionamiento: http://www.caricatos.net/inicio.html

Requiere la librería GD en versión superior a la 2.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Última edición por caricatos; 27/08/2006 a las 20:35