Como realizar lo siguiente con GD

Iniciado por multi-media asdfg, 6 Agosto 2011, 04:49 AM

0 Miembros y 1 Visitante están viendo este tema.

multi-media asdfg

Hola,

Quiero hacer lo siguiente con GD:




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 ?

multi-media asdfg

Otra pregunta sobre el tema seria como hacer un degradado entre dos o mas puntos.

Shell Root

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

multi-media asdfg

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.



Por eso lo que decia antes degradado entre las dos elipses y no superponiéndolo.

Es posible ?

multi-media asdfg

Alguna idea ?

Dejo el código que he usado en la imagen anterior:

Código (php) [Seleccionar]
<?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' => );
 
$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 );
 
?>

bomba1990

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.
"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve

bomba1990

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:

Código (php) [Seleccionar]

<?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==){
$a=($color['a']==3)?1:$color['a']+1;
$color[$a]=$i;
}else{
$color[$color['a']]=$colores-$i;
}

if($z%2==&& $i>=254 && $color['a'] < 3){$color['a']+=1;}
elseif($z%2==&& $i==255 && $color['a']==){$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:



Para la imagen del mapa, seria bueno que tuvieras una vacia(sin colores), para hacer pruebas ensima de ella.
"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve

multi-media asdfg

Muchas gracias bomba1990.

Últimamente he estado pensando que quizás sea mejor hacer los degradados con polígonos en lugar de elipses.