Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: multi-media asdfg en 6 Agosto 2011, 04:49 AM

Título: Como realizar lo siguiente con GD
Publicado por: multi-media asdfg en 6 Agosto 2011, 04:49 AM
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 ?
Título: Re: Como realizar lo siguiente con GD
Publicado por: multi-media asdfg en 8 Agosto 2011, 23:01 PM
Otra pregunta sobre el tema seria como hacer un degradado entre dos o mas puntos.
Título: Re: Como realizar lo siguiente con GD
Publicado por: Shell Root en 9 Agosto 2011, 00:51 AM
:http://www.digitalestudio.es/programacion/dibujar-degradados-con-php-y-gd/
Título: Re: Como realizar lo siguiente con GD
Publicado por: multi-media asdfg en 10 Agosto 2011, 13:57 PM
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 ?
Título: Re: Como realizar lo siguiente con GD
Publicado por: multi-media asdfg en 13 Agosto 2011, 14:10 PM
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 );
 
?>
Título: Re: Como realizar lo siguiente con GD
Publicado por: bomba1990 en 14 Agosto 2011, 01:59 AM
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.
Título: Re: Como realizar lo siguiente con GD
Publicado por: bomba1990 en 14 Agosto 2011, 06:38 AM
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:
(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.
Título: Re: Como realizar lo siguiente con GD
Publicado por: multi-media asdfg en 17 Agosto 2011, 16:32 PM
Muchas gracias bomba1990.

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