Hola,
Quiero hacer lo siguiente con GD:
(http://3.bp.blogspot.com/_nsxA5UWVCUY/TDRYZX9_yKI/AAAAAAAAAXk/0x2Ei77o8N4/s1600/maximas+andalucia+7-7.jpg)
Básicamente seria establecer una serie de puntos y de estos que salga el color como lo hace en la imagen, pero no se con que función de GD hacer esto y mucho menos como asociarlo a una regla de colores.
Alguien me puede aconsejar ?
Otra pregunta sobre el tema seria como hacer un degradado entre dos o mas puntos.
:http://www.digitalestudio.es/programacion/dibujar-degradados-con-php-y-gd/
No consigo poner el funcionamiento ni el código que proponen en la web.
El caso es, si no hay manera sencilla de hacer dos elipses y entre estas crear el degradado...
Esto es lo que yo llego a hacer... superponer dos elipses, pero queda ese corte.
(http://img88.imageshack.us/img88/11/capturazv.png)
Por eso lo que decia antes degradado entre las dos elipses y no superponiéndolo.
Es posible ?
Alguna idea ?
Dejo el código que he usado en la imagen anterior:
<?php
header( "Content-type: image/gif" );
$imagen = imagecreatefrompng('tras.png');
$morado = array( 'r' => 186, 'g' => 0, 'b' => 255 );
$amarillo = array( 'r' => 255, 'g' => 220, 'b' => 0 );
$pasos = 2000;
$incr_r = ( $amarillo['r'] - $morado['r'] ) / $pasos;
$incr_g = ( $amarillo['g'] - $morado['g'] ) / $pasos;
$incr_b = ( $amarillo['b'] - $morado['b'] ) / $pasos;
// El centro de la imagen será el del gradiente
$cx = imagesx( $imagen ) / 3;
$cy = imagesy( $imagen ) / 3;
$ñ = imagesx( $imagen ) / 2;
$k = imagesy( $imagen ) / 3;
// Ancho y alto del gradiente inicial
$ancho = 240;
$alto = 140;
// Valores de reducción del elipse
$incr_x = $ancho / $pasos;
$incr_y = $alto / $pasos;
$r = $morado['r'];
$g = $morado['g'];
$b = $morado['b'];
// Dibujamos las elipses según los pasos
for( $i = 10; $i < $pasos; $i++ ){
$color = imagecolorallocate( $imagen, $r, $g, $b );
imagefilledellipse( $imagen, $cx, $cy, $ancho, $alto, $color );
imagefilledellipse( $imagen, $ñ, $k, $ancho, $alto, $color );
$r += $incr_r;
$g += $incr_g;
$b += $incr_b;
// Reducimos el tamaño de la siguiente elipse
$ancho -= $incr_x;
$alto -= $incr_y;
}
imagegif( $imagen );
imagedestroy( $imagen );
?>
hola, y si usas colores alpha y le ds un poco de opacidad??
http://php.net/manual/es/function.imagecolorallocatealpha.php
en el modo por defecto el hace una mezcla de colores interesante qu ete podria servir.
Sobre la barra de colores aqui te dejo un ejemplo que hice ahorita rapidamente es vertical no horizontal, despues lo mejorare, pero quizas te puede servir:
<?php
$colores=255;
$saltos=1;
$lineas=1;
$repeticiones=$colores/$saltos;
$imagen = imagecreatetruecolor(100,(5*$lineas*$repeticiones));
imagefill($imagen,0,0,imagecolorallocatealpha($imagen,255,255,255,0));
//imagefilledrectangle($imagen, 4, 4, 50, 25, imagecolorallocatealpha($imagen,10,255,255,0));
$color=array(
'image'=>'',
'a'=>1,
'1'=>$colores,
'2'=>0,
'3'=>0
);
for($z=0;$z<=5;$z++){
for($i=0;$i<255;$i+=$saltos){
$x=$i*$repeticiones/$colores;
if( $z%2==0 ){
$a=($color['a']==3)?1:$color['a']+1;
$color[$a]=$i;
}else{
$color[$color['a']]=$colores-$i;
}
if($z%2==1 && $i>=254 && $color['a'] < 3){$color['a']+=1;}
elseif($z%2==1 && $i==255 && $color['a']==3 ){$color['a']=1;}
$color['image']=imagecolorallocate($imagen,$color['1'],$color['2'],$color['3']);
imagefilledrectangle($imagen,0,($z*$lineas*$repeticiones)+$x,100,($z*$lineas*$repeticiones)+$x+$lineas,$color['image']);
}
}
header( "Content-type: image/png" );
imagepng( $imagen );
imagedestroy( $imagen );
?>
Resultado:
(http://www.freeimagehosting.net/t/40bb3.jpg) (http://www.freeimagehosting.net/40bb3)
Para la imagen del mapa, seria bueno que tuvieras una vacia(sin colores), para hacer pruebas ensima de ella.
Muchas gracias bomba1990.
Últimamente he estado pensando que quizás sea mejor hacer los degradados con polígonos en lugar de elipses.