Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Capturar click sobre una imagen

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Javascript
Mensaje Jue Mar 02, 2006 12:13 pm
slopal
Perlero Nuevo
Perlero Nuevo
Registrado: 23 Nov 2005
Mensajes: 78
Capturar click sobre una imagen Responder citando

Con mi programa devuelvo una imagen en la pagina html de salida.
Hay alguna manera de captar un click (o varios) encima de esta imagen, para entonces, ejecutar alguna otra cosa?.


(en realidad lo que quiero es "dividir" esa imagen en 10 partes, y segun la que se clique, volver a generar una imagen de esa parte, pero a escala mas grande, como una especie de zoom).

Thanx
Mensaje Jue Mar 02, 2006 12:59 pm
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

Umm, lo que necesitas lo puedes hacer con javascript, se me ocurre algo así:

Código:

<script language="javascript">
var clickCount = 0;

var ZoomImages = new Array();
      ZoomImages[0] = 'imagen_1.jpg';
      ZoomImages[1] = 'imagen_2.jpg';
      ZoomImages[2] = 'imagen_3.jpg';
      ZoomImages[3] = 'imagen_4.jpg';


function zoomIn(){

   var imagen = findDOM('imagenZoom');
   clickCount += 1;

   imagen.src = ZoomImages[clickCount];
   
}


function findDOM(objectId) {
   if (document.getElementById) {
     return (document.getElementById(objectId));
   }
   if (document.all) {
     return (document.all[objectId]);
   }
}
</script>



Y en el HTML:

Código:

<a href="#" onClick="zoomIn();"><img name="imagenZoom" src="imagen_1.jpg"></a>



No lo he probado pero debe de funcionar más o menos como necesitas, a lo mejor tengas que cambiar algunas cosas.


SALUDOS
Mensaje Jue Mar 02, 2006 5:00 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4128
Ubicación: Valladolid, España
Re: A lo mejor pregunto una tontería, pero... :oops: Responder citando

slopal escribió:
(en realidad lo que quiero es "dividir" esa imagen en 10 partes, y segun la que se clique, volver a generar una imagen de esa parte, pero a escala mas grande, como una especie de zoom).

Para hacer la imagen pinchable por zonas tienes que hacer un mapa.
Hay dos soluciones, del lado del cliente, para saber en qué punto el usuario pincha la imagen.
La primera se basa en hacer un mapa html, dividida por zonas y la segunda consiste en recibir las coordenadas x e y del punto de la imagen pinchado.
En la primera solución, lo que primero haces, en el código html, creas un mapa de la siguiente forma:
Código:
<map name="mimapa">
  <area shape="rect" coords=" 0, 0, 7, 7" href="/cgi-bin/zoom.pl?zona=1">
  <area shape="rect" coords=" 8, 0,15, 7" href="/cgi-bin/zoom.pl?zona=2">
  <area shape="rect" coords="16, 0,23, 7" href="/cgi-bin/zoom.pl?zona=3">
  <area shape="rect" coords="24, 0,31, 7" href="/cgi-bin/zoom.pl?zona=4">
  <area shape="rect" coords="32, 0,39, 7" href="/cgi-bin/zoom.pl?zona=5">
  <area shape="rect" coords="40, 0,47, 7" href="/cgi-bin/zoom.pl?zona=6">
</map>

Luego, en la marca de la imagen pones la referencia a ese mapa, con usemap:
Código:
<img src="zoom.gif" width="48" height="8" border="0" usemap="#mimapa" vspace="0" hspace="0">

Todo este código lo puedes generar con tus programas, desde luego. Y si el mapa siempre es el mismo, lo guardas en el servidor web y en usemap pones el URI al mapa.

Otra forma es recibiendo las coordenadas x e y del pixel pulsado. Luego, en tu programa, tendrás que hacer unas cuentas para saber qué zona tendrás que ampliar.
Para esta solución, tienes que hacer un form dentro de la página. Algo así:
Código:
<form action="... tu cgi ..." method="POST">
  <input name="area" type="image" src="imagen.gif" alt="Zoom de la imagen">
</form>
Cuando el usuario pulse sobre esa imagen, recibirás en tu cgi dos parámetros: area.x y area.y, con las coordenadas.
En esta solución también se puede agregar un mapa html, como en la solución primera.

Una tercera solución consiste en hacer el mapa en el lado del servidor.
Se puede hacer algo así:
Código:
<a href="http://tudominio.com/cgi-bin/zoom.pl"><img src="imagen.gif" ismap alt="Zoom de la imagen"></a>
El resultado es que cuando el usuario pulse en la imagen, el navegador estará llamando a http://tudominio.com/cgi-bin/zoom.pl?122,32, siendo las dos últimas cifras las coordenadas x e y del punto pulsado.

Mapas desde el lado del cliente
Mapas desde el lado del servidor
Tipos de controles de entrada de datos en un form
Mensaje Lun Mar 06, 2006 4:10 am
macgregor
Perlero Frecuente
Perlero Frecuente
Registrado: 09 Dic 2004
Mensajes: 117
Ubicación: españa
MAP AREAS. Responder citando

Para hacer lo que quieres necesitas crear map areas en la imagen.

Puedes hacerlas de forma circular, rectangular, definir un poligono o incluso solo puntos.

Como crearlas :

Código:
<MAP NAME="#mapa1">

<AREA SHAPE="RECT" COORDS="135,13,309,68" HREF="http://lalala" ALT="zona1">
<AREA SHAPE="RECT" COORDS="2,112,209,168" HREF="http://lololo" ALT="zona2">
...................
</MAP>

Para asignar esas areas a tu imagen lo haces al definir la imagen en cuestion.

Código:
<IMG SRC="tuimagen.gif" BORDER="0" USEMAP="#mapa1">


Puedes definirlo usando ISMAP en lugar de USEMAP, pero te recomiendo USEMAP que se interpreta en el cliente en lugar de en el servidor.

Posibles areas a definir:

PUNTOS:
Código:
<AREA SHAPE="POINT" COORDS="x,y" HREF="http://lalala.com/punto.cgi" ALT="punto">


RECTANGULOS:
Código:
<AREA SHAPE="RECT" COORDS="ax,ay,bx,by" HREF="http://lalala.com/rectangulo.cgi" ALT="rectangulo">

(si ay y by son iguales en realidad creas una linea)

POLIGONOS:
Código:
<AREA SHAPE="POLY" COORDS="ax,ay,bx,by,cx,cy....ax,ay" HREF="http://lalala.com/poligono.cgi" ALT="poligono">

(defines los vertices del poligono, ojo! hay que cerrar el poligono repitiendo el primer vertice)

RESTO IMAGEN:
Código:
<AREA SHAPE="DEFAULT" HREF="http://lalala.com/resto.cgi" ALT="resto">

(tambien puedes escoger que no haga nada el resto de la imagen.)
Código:
<AREA SHAPE="DEFAULT" NOHREF>


En tu caso como quieres hacer un zoom puedes capturar el lugar donde se clicó con el mouse definiendo el area dentro de un form y volver a crear tu imagen ampliando una zona desde las coordenadas clicadas.

Espero que te ayude en algo Very Happy
Un saludo.

EDITANDO: jeje como movieron el mensaje no vi que ya tenia respuestas Smile
Publicar nuevo tema   Responder al tema    Foros de discusión -> Javascript Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group