Foros del Web » Programando para Internet » PHP »

GD: técnica gráfica

Estas en el tema de GD: técnica gráfica en el foro de PHP en Foros del Web. Hola: Cuando mezclo una imagen con otra de 2 colores, y uno de ellos transparentes (por ejemplo con forma cuadrada)... El color transparente se combina ...
  #1 (permalink)  
Antiguo 28/12/2005, 18:16
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
GD: técnica gráfica

Hola:

Cuando mezclo una imagen con otra de 2 colores, y uno de ellos transparentes (por ejemplo con forma cuadrada)... El color transparente se combina con los de la otra imagen y se crea un recuadro como si fuera un marco...

Ya mezcladas las imágenes, me gustaría poder poner transparente el segundo color de la primera imagen en la imagen resultante...

La idea es crear una especie de selección o recorte de una imagen.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #2 (permalink)  
Antiguo 29/12/2005, 06:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
A ver si este artículo te ayuda:

http://blog.joshuaeichorn.com/archiv...blems-with-gd/

Un saludo,
  #3 (permalink)  
Antiguo 30/12/2005, 17:04
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Gracias por la información, pero al final el problema estaba en otra cosa de lo más simple...

Es que estaba haciendo las pruebas con explorer y como las imagenes png no las soporta correctamente, los resultados no eran fiables.

Puedes echarle una mirada a una prueba del resultado...

http://www.pepemolina.com/mapas/prueba.html

En la página hay 4 imágenes: la original en png con fondo transparente, y 3 resultados del script con 3 versiones de la imagen (gif, png y jpg)... Solo veía el efecto en explorer con la imagen gif ¿? y cuando descubría que tanto en mozilla como en opera se obtenía el resultado deseado comprendí el problema...

El problema que tengo ahora es que mi servidor no soporta las imagenes gif (imagegif($imagen))...

Supongo que podría escribir a la salida estandar (echo) los datos del proceso y poner una cabecera gif para que mi server responda adecuadamente (tal vez algo "rebuscado")

Para terminar pongo el script completo:

Código:
<?php
$imagen = $_GET["imagen"];
$coors = $_GET["coors"];
if (isset($coors))
	$coordes = explode(",", $coors);
else
	$coordes = array(120, 120, 110, 110);
$diam = $coordes[2] * 2;
$image = imagecreatefromstring(file_get_contents($imagen));
$ancho = imagesx($image);
$alto = imagesy($image);
//$copia = imagecreatetruecolor($ancho, $alto);
$copia = imagecreate($ancho, $alto);

//ImageAlphaBlending($copia, true);
//imagesavealpha($copia, false);

$negro = imagecolorallocate($copia, 0, 0, 0);
$transpa = imagecolorallocate($copia, 255, 255, 255);

imagefill($copia, 0, 0, $negro);
imagefilledellipse($copia, $coordes[0], $coordes[1], $diam, $diam, $transpa);
imagecolortransparent($copia, $transpa);

//imagecopy($image, $copia, 0, 0, 0, 0, $ancho, $alto);
//imagecopymerge($image, $copia, 0, 0, 0, 0, $ancho, $alto, 100);
imagecopyresampled($image, $copia, 0, 0, 0, 0, $ancho, $alto, $ancho, $alto);

//imagesavealpha($image, true);
//ImageAlphaBlending($image, false);
//imagesavealpha($image, true);

//imagecopymerge($image, $copia, 0, 0, 0, 0, $ancho, $alto, 100);

//$transpa2 = imagecolorallocate($image, 0, 0, 0);

//imagealphablending($image, false);

$transpa2 = imagecolorexact($image, 0, 0, 0);
//imagecolortransparent($imagen, $transpa);

imagecolortransparent($image, $transpa2);

// output the picture
header("Content-type: image/png");
imagepng($image);

imagedestroy($image);

?>
Hay mucho código que hice comentario, para que se vea (más o menos) las pruebas que he hecho...

Bueno, saludos y muchas felicidades.

__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 31/12/2005, 02:29
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
¡Je, je!

No sé cuantos vieron la última página, pero se mostraba desde mi localhost

Acabo de subirla bien (¡eso espero!)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 02/01/2006, 05:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ahora se vé OK.

Un saludo,
  #6 (permalink)  
Antiguo 02/01/2006, 17:17
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Gracias por la ayuda

Cambié la página de muestra de antes con algo más depurado: http://www.pepemolina.com/mapas/prueba.html

Hice 3 versiones del script generador de polígonos, que se corresponden con las areas de los mapas (html).

Tengo una página que genera los mapas html: http://www.pepemolina.com/mapas/index2.html (hay que seleccionar una imagen de nuestro disco duro y se sube a una base de datos, y con el ratón se pueden seleccionar las areas).

Los ficheros son gifshape.php que recibe por url el tamaño de la imagen, la figura (shape) el color hexadecimal del relleno y del borde (pueden omitirse, pero no ambos) y las coordenadas de la figura.
gifshapeid que lleva como parámetro el id de la foto de la base de datos...
... y gifshapeurl que necesita el parámetro url de la imagen

Los 2 últimos hacen los polígonos en base a la imagen del parámetro correspondiente (id o url)

El efecto que se obtiene me parece bastante bueno (el primero de los enlaces)

Otra vez gracias
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:05.