Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)
Autor
|
Tema: Como realizar lo siguiente con GD (Leído 1,181 veces)
|
multi-media asdfg
Desconectado
Mensajes: 25
|
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 ?
|
|
|
|
|
En línea
|
|
|
|
multi-media asdfg
Desconectado
Mensajes: 25
|
Otra pregunta sobre el tema seria como hacer un degradado entre dos o mas puntos.
|
|
|
|
|
En línea
|
|
|
|
Shell Root
Desconectado
Mensajes: 2.456
Alex Jurado
|
:http://www.digitalestudio.es/programacion/dibujar-degradados-con-php-y-gd/
|
|
|
|
|
En línea
|
 ---
|
|
|
multi-media asdfg
Desconectado
Mensajes: 25
|
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 ?
|
|
|
|
|
En línea
|
|
|
|
multi-media asdfg
Desconectado
Mensajes: 25
|
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 ); ?>
|
|
|
|
|
En línea
|
|
|
|
|
|
|
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: <?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:  Para la imagen del mapa, seria bueno que tuvieras una vacia(sin colores), para hacer pruebas ensima de ella.
|
|
|
|
|
En línea
|
|
|
|
multi-media asdfg
Desconectado
Mensajes: 25
|
Muchas gracias bomba1990.
Últimamente he estado pensando que quizás sea mejor hacer los degradados con polígonos en lugar de elipses.
|
|
|
|
|
En línea
|
|
|
|
|
|