Foros del Web » Creando para Internet » Diseño web »

Colorear zona de una imagen

Estas en el tema de Colorear zona de una imagen en el foro de Diseño web en Foros del Web. Imaginad que tenemos una imagen del mapa de España dividido en provincias y queremos colorear una provincia de un color que se nos pasa por ...
  #1 (permalink)  
Antiguo 13/11/2008, 09:30
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 9 años, 1 mes
Puntos: 0
Exclamación Colorear zona de una imagen

Imaginad que tenemos una imagen del mapa de España dividido en provincias y queremos colorear una provincia de un color que se nos pasa por parámetro. ¿Cómo lo haríais?

Yo pensaba utilizar layers y aplicarle el color, pero los layers son siempre rectangulares y no puedo darle formas de provincia.

No me vale varios layer que contengan una imagen de cada provincia con cada color y activar la que corresponda, porque pueden ser X colores.

¿Alguien ha hecho algo similar?
  #2 (permalink)  
Antiguo 13/11/2008, 11:21
Avatar de Aresillo
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Becerril de la Sierra
Mensajes: 958
Antigüedad: 9 años, 8 meses
Puntos: 53
Respuesta: Colorear zona de una imagen

Yo lo hice con mapas de imagen... aunque no sé hoy en día como estará visto...
Sino... en flash...

Aresillo!!
  #3 (permalink)  
Antiguo 13/11/2008, 11:23
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.711
Antigüedad: 12 años, 7 meses
Puntos: 833
Respuesta: Colorear zona de una imagen

Así como Aresillo, opino que los mapas de imagen son una buena opción en este caso (<map> <area>), un recurso muy útil para hacerlo puedes encontrarlo en la página de caricatos:

http://www.caricatos.net/mapas/
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 17/11/2008, 03:34
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Colorear zona de una imagen

David, dame tu cuenta bancaria, me acabas de resolver la vida.
  #5 (permalink)  
Antiguo 17/11/2008, 04:08
Avatar de Aresillo
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Becerril de la Sierra
Mensajes: 958
Antigüedad: 9 años, 8 meses
Puntos: 53
Respuesta: Colorear zona de una imagen

Gracias por la parte que me toca!!

Aresillo!!
EDITO: Aunque te haya/mos resuelto el problema quizás podrías probar con capas poniendo una imagen de fondo y capas encima... podrías hacer que se agrandarán sobre el resto de la foto, que saliera texto...más opciones...

Última edición por Aresillo; 17/11/2008 a las 04:15
  #6 (permalink)  
Antiguo 17/11/2008, 04:09
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.544
Antigüedad: 15 años, 8 meses
Puntos: 1262
Respuesta: Colorear zona de una imagen

Cita:
Iniciado por jagabarron Ver Mensaje
David, dame tu cuenta bancaria, me acabas de resolver la vida.
¡Je, je!... no soy David, pero fuí el que hizo la página, y en el index puse un botón Pay-Pal (es cierto, pero es broma )

Por mi parte, me alegro que te sirviera.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 17/11/2008, 05:30
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Colorear zona de una imagen

Pues chicos, siento decir que no me sirve. Ya que necesito que el mapa esté alojado en mi servidor y con ésta solución no tengo acceso a gifshape.php ni transpa.php, que son archivos necesarios.

Caricatos, me he puesto en contacto contigo anteriormente via mail... Me alegro que leas éste post.
  #8 (permalink)  
Antiguo 17/11/2008, 05:35
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Colorear zona de una imagen

Realmente, lo que necesito es colorear provincias de españa con un color que se pase por parámetro, por lo tanto, tener las imágenes ya generadas no me vale, porque no sé que color me va a llegar.

La solución de caricatos me sirve (exceptuando el temilla de que no tengo los archivos que generan el mapa), ya que lo que hago es inicializar todas las zonas con la propiedad visible activa.
  #9 (permalink)  
Antiguo 17/11/2008, 11:33
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.544
Antigüedad: 15 años, 8 meses
Puntos: 1262
Respuesta: Colorear zona de una imagen

Hola:

Acabo de mirar el correo, y si dispones de php y las librerías GD, son ficheros bastante sencillos... te paso el código (si tienes problemas abre un mensaje en php que es más fácil encontrar ayuda... hay verdaderos monstruos )

transpa.php:
Código:
<?php
$ancho = (isset($_GET["ancho"])) ? $_GET["ancho"] : 1;
$alto = (isset($_GET["alto"])) ? $_GET["alto"] : 1;

$imagen = imagecreate($ancho, $alto);

$transpa = imagecolorallocate($imagen, 255, 255, 255);
imagecolortransparent($imagen, $transpa);
imagefill($imagen, 0, 0, $transpa);

header("Content-type: image/gif");
imagegif($imagen);
imagedestroy($imagen);
?>
y gifshape.php:
Código:
<?php
function rgbColor($fondo)	{
	$red = (int) hexdec(substr($fondo, 0, 2));
	$green = (int) hexdec(substr($fondo, 2, 2));
	$blue = (int) hexdec(substr($fondo, 4, 2));
	return array($red, $green, $blue);
}

$ancho = $_GET["ancho"];
if (isset($ancho))
	$ancho = $_GET["ancho"];
else
	$ancho = 200;

$alto = $_GET["alto"];
if (isset($alto))
	$alto = $_GET["alto"];
else
	$alto = 200;

$coors = $_GET["coors"];
if (isset($coors))	{
	$coordes = explode(",", $coors);
	$diam = $coordes[2] * 2;
	}
else	{
	$coordes = array(0, 0, $ancho, $alto, 0, $alto);
	$diam = $coordes[2] * 2;
}
$puntos = count($coordes) / 2;


$imagen = imagecreate($ancho, $alto);
$shape = $_GET["shape"];
if (!isset($shape))
	$shape = "rect";

//$negro = imagecolorallocate($copia, 0, 0, 0);
$transpa = imagecolorallocate($imagen, 254, 254, 254);

imagefill($imagen, 0, 0, $transpa);
imagecolortransparent($imagen, $transpa);

$borde = $_GET["borde"];
if (isset($borde))	{
	$conBorde = true;
	$rgbBorde = rgbColor($borde);
	$_br = (int) $rgbBorde[0];
	$_bg = (int) $rgbBorde[1];
	$_bb = (int) $rgbBorde[2];
	$_borde = imagecolorallocate($imagen, $_br, $_bg, $_bb);
}
else
	$conBorde = false;

$relleno = $_GET["relleno"];
if (isset($relleno))	{
	$conRelleno = true;
	$rgbRelleno = rgbColor($relleno);
	$_rr = (int) $rgbRelleno[0];
	$_rg = (int) $rgbRelleno[1];
	$_rb = (int) $rgbRelleno[2];
	$_relleno = imagecolorallocate($imagen, $_rr, $_rg, $_rb);
}
else
	$conRelleno = false;

switch($shape)	{
	case "circle":
	if ($conRelleno)
	imagefilledellipse($imagen, $coordes[0], $coordes[1], $diam, $diam, $_relleno);
	if ($conBorde)
	imageellipse($imagen, $coordes[0], $coordes[1], $diam, $diam, $_borde);
	break;
	case "poly":
	if ($conRelleno)
	imagefilledpolygon($imagen, $coordes, $puntos, $_relleno);
	if ($conBorde)
	imagepolygon($imagen, $coordes, $puntos, $_borde);
	break;
	default:
	if ($conRelleno)
	imagefilledrectangle($imagen, $coordes[0], $coordes[1], $coordes[2], $coordes[3], $_relleno);
	if ($conBorde)
	imagerectangle($imagen, $coordes[0], $coordes[1], $coordes[2], $coordes[3], $_borde);
	break;
}



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

imagedestroy($imagen);

?>
Supongo que lo habré publicado en algún post php.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #10 (permalink)  
Antiguo 17/11/2008, 11:44
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Colorear zona de una imagen

Perfecto, ya funciona. Muchas gracias por ayudarme.

Ahora tengo un problema más grande aún: tiene que ser en .NET

Estoy dibujando las regiones por coordenadas con tu aplicación, pero preveo que va a ser una trabajo muy laborioso...

Sé que es mucho pedir, pero por intentarlo... ¿Conocéis si están publicadas en algún sitio las coordenadas para dibujar provincias españolas?

Un saludo
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 11:10.