Foros del Web » Programando para Internet » PHP »

Problemas con imagenes en PHP-GD

Estas en el tema de Problemas con imagenes en PHP-GD en el foro de PHP en Foros del Web. Qué tal? Somos un grupo de estudiantes de la universidad de Montevideo, Uruguay, que estamos trabajando en un proyecto de fin de carrera en donde ...
  #1 (permalink)  
Antiguo 09/04/2004, 15:55
 
Fecha de Ingreso: abril-2004
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
Pregunta Problemas con imagenes en PHP-GD

Qué tal? Somos un grupo de estudiantes de la universidad de Montevideo, Uruguay, que estamos trabajando en un proyecto de fin de carrera en donde se deben manejar datos geograficos.

Estamos hablando de un programa hecho en PHP capaz de hacer zooms in y out y traslado de la imagen. El codigo que estamos utilizando funciona bien para imagenes relativamente pequeñas (300kb, 2000x1500pixeles), sin embargo, con los tamaños de imagenes que nosotros debemos usar (desde 1Mb a 17Mb, todas ellas de 10000x7500pixeles), el codigo no parece estar corriendo bien.
Usando imagenes de los tamaños mencionados arriba, vemos que al intentar cargar el zoom in de la imagen original, el browser (IE6.1) demora unos segundos y termina mostrando el icono "X", en vez del zoom de la imagen. Si cambiamos esa imagen grande por una mas pequeña, todo funciona bien.

Esto nos lleva a pensar que quizas PHP o GD tengan un maximo de tamaño de manejo de imagenes (en kb o en pixeles). La consulta entonces viene por el lado de si conocen algun parametro configurable que fije el maximo del tamaño de imagenes a manejar o si quizas halla algun formato mejor que jpeg para manejar imagenes tan grandes. Nos han mencionado GD2, pero como convertimos JPEG a GD2???

Un dato no menor es que cuando se esta cargando el zoom de la imagen original, el servicio Apache (usamos Apache 2.0) usa cerca de 300Mb, algo no menor, por lo que quizas el cuello de botella este tambien por el lado del Apache, en su httpd.conf.

Detallamos debajo el codigo usado en los 3 archivos php:

ARCHIVO: MAP.PHP (es el que se debe cargar en el browser)

<?
session_register("Alto");
$Alto="548"; //y=1564 total
session_register("Ancho");
$Ancho="712"; // x=2032 total
session_register("Factor");
$Factor=1564/548;
?>

<body bgcolor="#000000"</body>
<FORM METHOD="POST" ACTION="zoom1.php">

<table border="7" bgcolor="Silver" bordercolor="blue" align="center" cellspacing="2" cellpadding="6">
<tr>
<td>
Escoja Opcion: <br clear=left> <br clear=left>
<input type="radio" checked name="Operacion" value="Zoom In">Zoom In <br clear=left> <br clear=left>
<input type="radio" disabled name="Operacion" value="Zoom Out">Zoom Out <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Recenter">Recenter <br clear=left> <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Quit">Quit
</td>
<td>
<INPUT TYPE="IMAGE" SRC="g.jpg" ALIGN="RIGHT" WIDTH="<? echo $Ancho ?>" HEIGHT="<? echo $Alto ?>" NAME="mapa">
</td>
</tr>
</table>

</FORM>


ARCHIVO: ZOOM1.PHP (LLAMADO DESDE MAP.PHP)

<?php
session_start();
?>

<FORM METHOD="POST" ACTION="zoom2.php">
<table border="7" bgcolor="Silver" bordercolor="blue" align="center" cellspacing="2" cellpadding="6">
<tr>
<td>
Escoja Opcion: <br clear=left> <br clear=left>
<input type="radio" checked name="Operacion" value="Zoom In">Zoom In <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Zoom Out">Zoom Out <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Recenter">Recenter <br clear=left> <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Quit">Quit
</td>
<td>
<INPUT TYPE="IMAGE" SRC="generazoom1.php?x1=<?php echo $mapa_x ?>&y1=<?php echo $mapa_y ?>" ALIGN="RIGHT" WIDTH="<? echo $Ancho ?>" HEIGHT="<? echo $Alto ?>" NAME="mapa">
</td>
</tr>
</table>
</form>


ARCHIVO: GENERAZOOM1.PHP (LLAMADO DESDE ZOOM1.PHP)

<?php
session_start();
Header( "Content-type: image/jpeg");
$bigmap=ImageCreateFromJpeg("g.jpg");
$image_out=ImageCreateTrueColor($Ancho,$Alto);
$posx1=floor($x1*$Factor-$Ancho/2);
$posy1=floor($y1*$Factor-$Alto/2);
// ImageCopyResized(Image_dst, Image_src, dstX, dstY, srcX, srcY, destW, destH, srcW, srcH)
$copia=ImageCopyResized($image_out,$bigmap,0,0,$po sx1,$posy1,$Ancho,$Alto,$Ancho,$Alto);
ImageJpeg($image_out,0);
ImageDestroy($bigmap);
ImageDestroy($image_out);
?>


Cualquier ayuda que nos puedan brindar les estaremos muy agradecidos.

Un abrazo desde Uruguay!

Marcelo Baz
[email protected]
  #2 (permalink)  
Antiguo 10/04/2004, 00:30
 
Fecha de Ingreso: marzo-2004
Ubicación: $_SERVER['DOCUMENT_ROOT'] :-)
Mensajes: 100
Antigüedad: 13 años, 8 meses
Puntos: 0
Dos cosas, GD2 (si no me equivoco) es una versión de la librería GD, no un formato de imagenes.

Por otro lado, ese tiempo transcurrido puede ser el maximo permitido para los scripts PHP (usualmente 30 segundos). Esa directriz puedes cambiarla desde PHP.INI en la parte donde dice algo asi.

max_execution_time = 30

Prueba y nos cuentas.
__________________
-- girls.code.better --
  #3 (permalink)  
Antiguo 10/04/2004, 01:15
 
Fecha de Ingreso: abril-2004
Mensajes: 30
Antigüedad: 13 años, 8 meses
Puntos: 0
yo tuve problemitas iguales hace como 6 meses, pero los resolvi con un poquito de sessions y generando imagenes mas pequeñas, yo tenia PNG's de hasta 120MB, lo primerito que hice fue crear JPG's que nunca salieran de un cuadro de 400*400pix, tons cuando veias el mapa completo... lo veias en un cuadro de 400*400 la imagen no pesaba mas 25KB, un cuate me ayudo con un DHTML para dibujar rectangulo rojo para que pudieras seleccionar el area sobre la que querias el zoom, obtenias las coordenadas del cuadrito rojo y con una simple multiplicacion generas las siguiente imagen JPG y asi susesivamente, pero para que no te pase eso... primero genera 4 imagenes a mano o con un script, como mejor lo veas.... por ejemplo la original mide 10,000 pix * 10,000, has versiones de 5000pix, de 2500pix, y de 1000pix, y cuando esten viendo el menor zoom, saca los jpg's que vas a mostrar de la 1000, si llegan a sobrepasar el limite, cambias de imagen a la de 2500pix... ya asi sucesivamente, asi te ahorras mucho tiempo de procesador, memoria, pero ocupas mas HD, ya se que asi no te resuelvo ni tantito el problema del zoom maximo, porque tendrias que usar la imagen mas grande... pero es una buena forma de hacer mas rapido a tu script, lo siguiente seria probar con el GD mas nuevo, una maquina mas potente y con mas memoria... y de lo demas echale la cruz a PHP
  #4 (permalink)  
Antiguo 10/04/2004, 01:29
 
Fecha de Ingreso: abril-2004
Mensajes: 30
Antigüedad: 13 años, 8 meses
Puntos: 0
Oye... de casualidad no estas corriendo el php en un windows?

porque ahorita que me acuerdo, ese fue uno de los problemas que tuvimos nosotros.... lo corrimos con easyphp en windows y nomas no dabamos una, pero despues lo pasamos a un modesto servidor en linux... y no tuvimos mas broncas que el tiempo.
  #5 (permalink)  
Antiguo 10/04/2004, 10:57
 
Fecha de Ingreso: abril-2004
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Problemas con PHP-GD

Estimada codegirl:

Muchas gracias por la ayuda. Lamentablemente intenté con el cambio del parámetro que me aconsejaste pero el resultado ha sido el mismo. Sigo sin poder cargar el zoom de la imagen utilizando las funciones de GD. El problema hasta donde entiendo no esta en el browser, sino en las propias funciones de GD, ya que la misma imagen de 10000x7500pixls cargada solo utilizando html se ve bien, sin embargo, cuando utilizo codigo php con las funciones de GD, ahi se descalabra la cosa. Creo que la solucion viene por el lado de cargar una vez la imagen jpeg de 10000x7500, guardarla como imagen gd2 (gd2 es un formato de imagenes que utilizan las librerias de GD y que no requiere tanta memoria como jpeg) y posteriormente guardar esa imagen como gd2. Ahi puedo crear como nueva una parte de la imagen gd2 sin mucho uso de memoria con la funcion ImageCrateFromGd2Part(x, y, width, height). Luego muestro esa parte de la imagen con ImageJpeg().
Entendamonos, todo esto es teorico, me acabo de levantar a probarlo, asi que en las proximas horas les contare si realmente funciona.
De todas formas, gracias nuevamente por el apoyo.

Nos vemos!

Marcelo.

Cita:
Mensaje Original por codergirl
Dos cosas, GD2 (si no me equivoco) es una versión de la librería GD, no un formato de imagenes.

Por otro lado, ese tiempo transcurrido puede ser el maximo permitido para los scripts PHP (usualmente 30 segundos). Esa directriz puedes cambiarla desde PHP.INI en la parte donde dice algo asi.

max_execution_time = 30

Prueba y nos cuentas.
  #6 (permalink)  
Antiguo 10/04/2004, 11:22
 
Fecha de Ingreso: abril-2004
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
Estimado lord_michael,

Efectivamente, la idea que mencionas de partir el mapa en partes mas pequeñas es como lo tenia en un principio, pero para hacer zooms y traslados del mapa coincidiras en que es mejor tener una sola imagen. De todas formas, en ultimo caso, no me quedara otra que partir el mapa, aun cuando como dices, no me libro de tener que usar imagenes grandes.

Gracias por todo!

Marcelo.

Cita:
Mensaje Original por lord_michael
yo tuve problemitas iguales hace como 6 meses, pero los resolvi con un poquito de sessions y generando imagenes mas pequeñas, yo tenia PNG's de hasta 120MB, lo primerito que hice fue crear JPG's que nunca salieran de un cuadro de 400*400pix, tons cuando veias el mapa completo... lo veias en un cuadro de 400*400 la imagen no pesaba mas 25KB, un cuate me ayudo con un DHTML para dibujar rectangulo rojo para que pudieras seleccionar el area sobre la que querias el zoom, obtenias las coordenadas del cuadrito rojo y con una simple multiplicacion generas las siguiente imagen JPG y asi susesivamente, pero para que no te pase eso... primero genera 4 imagenes a mano o con un script, como mejor lo veas.... por ejemplo la original mide 10,000 pix * 10,000, has versiones de 5000pix, de 2500pix, y de 1000pix, y cuando esten viendo el menor zoom, saca los jpg's que vas a mostrar de la 1000, si llegan a sobrepasar el limite, cambias de imagen a la de 2500pix... ya asi sucesivamente, asi te ahorras mucho tiempo de procesador, memoria, pero ocupas mas HD, ya se que asi no te resuelvo ni tantito el problema del zoom maximo, porque tendrias que usar la imagen mas grande... pero es una buena forma de hacer mas rapido a tu script, lo siguiente seria probar con el GD mas nuevo, una maquina mas potente y con mas memoria... y de lo demas echale la cruz a PHP
  #7 (permalink)  
Antiguo 10/04/2004, 11:23
 
Fecha de Ingreso: abril-2004
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
Si, estoy usando Windows, aun cuando en Suse tengo el mismo resultado. Es un problema del maximo de pixels que las librerias de GD pueden manejar, de eso estoy seguro.

Nos vemos!

Marcelo.

Cita:
Mensaje Original por lord_michael
Oye... de casualidad no estas corriendo el php en un windows?

porque ahorita que me acuerdo, ese fue uno de los problemas que tuvimos nosotros.... lo corrimos con easyphp en windows y nomas no dabamos una, pero despues lo pasamos a un modesto servidor en linux... y no tuvimos mas broncas que el tiempo.
  #8 (permalink)  
Antiguo 10/04/2004, 13:34
 
Fecha de Ingreso: abril-2004
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
FUNCIONA!!!
Hay una funcion dentro de GD que levanta parte de una imagen, pero solo si esta en formato gd2 (?... propietario de GD...)
Pase la imagen de 18Mb de jpeg a png con el ACDSee (no perdio calidad) y despues use una herramienta de las librerias de Windows para pasar el formato png a gd2 (pngtogd2.exe, bajado de www.boutell.com/gd). Use la funcion que carga solo parte de una imagen (que casualmente solo funciona con formatos gd2) y aparentemente funciona bien. Me hizo algun berrinche cuando quiero cargarle parte de la imagen que esta en los bordes (no me la muestra completa), pero espero que sea algo solucionable. Me queda entender para que sirve un parametro llamado chunk size, pero a grandes rasgos esta funcionando y no demora mas de 2 o 3 segundos en cargar.

De nuevo, gracias a todos por el tiempo y la ayuda!
Nos vemos!

Marcelo.
  #9 (permalink)  
Antiguo 10/04/2004, 13:40
 
Fecha de Ingreso: abril-2004
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
Que banana!

Que banana! No es que en los bordes haya problema! Era que justo la parte del borde que queria ver estaba mayormente en blanco y no me mostraba nada como la gente. En definitiva, funciona excelente!
  #10 (permalink)  
Antiguo 11/04/2004, 15:30
 
Fecha de Ingreso: marzo-2004
Ubicación: $_SERVER['DOCUMENT_ROOT'] :-)
Mensajes: 100
Antigüedad: 13 años, 8 meses
Puntos: 0
Bien excelente solucion, aprendido y anotado.

A ver si luego nos compartes tu script para hacer algunas pruebas.

gracias por la leccion
__________________
-- girls.code.better --
  #11 (permalink)  
Antiguo 11/04/2004, 15:35
 
Fecha de Ingreso: abril-2004
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
Estoy en eso, espero hoy de noche terminar de escribir todo el codigo para realizar el zoom in, zoom out y traslado del centro de las imagenes. Apenas lo termine si quieren se los mando por mail, ya que es algo externso, aunque no descarto publicar parte del mismo, pues es relativamente repetitivo.

Gracias por todo!

Marcelo.


Cita:
Mensaje Original por codergirl
Bien excelente solucion, aprendido y anotado.

A ver si luego nos compartes tu script para hacer algunas pruebas.

gracias por la leccion
  #12 (permalink)  
Antiguo 11/04/2004, 16:48
 
Fecha de Ingreso: abril-2004
Mensajes: 30
Antigüedad: 13 años, 8 meses
Puntos: 0
Felicidades!!!!!!!...
Que bien que ya pudiste solucionar el problema, cuantos dias no dormiste para hacer ese script? jejeje es tipico no dormir cuando nos emocionamos en algo , igual que codergirl ... si nos puedes compartir el script pues te lo agradecemos .

MERITOS... !!!! MERITOS...!!!!
  #13 (permalink)  
Antiguo 11/04/2004, 16:55
 
Fecha de Ingreso: abril-2004
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
Acabo de terminar el zoom in y zoom out!! Ahora me toca entrarle al recentrado en una misma escala y apenas lo haga les publico el codigo, aunque sea en varios mensajes de este tipo.

Un abrazo!

Marcelo.

PD: Si, estuve toda esta semana durmiendo poco por este tema...

Cita:
Mensaje Original por lord_michael
Felicidades!!!!!!!...
Que bien que ya pudiste solucionar el problema, cuantos dias no dormiste para hacer ese script? jejeje es tipico no dormir cuando nos emocionamos en algo , igual que codergirl ... si nos puedes compartir el script pues te lo agradecemos .

MERITOS... !!!! MERITOS...!!!!
  #14 (permalink)  
Antiguo 11/04/2004, 20:11
 
Fecha de Ingreso: abril-2004
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
Bueno, aca va. Al final quedo bonito esto. Les cuento el orden de los archivos asi no se marean:

Archivo a cargar: zoom0.php
Este archivo carga una imagen llamada Mdeo_1000x724.gd2, la cual obviamente tiene una resolucion de 1000x724 pixels.

Los archivos zoom0.php, zoom1.php, zoom2.php, zoom3.php, zoom4.php y zoom5.php se encargan de realizar 5 niveles de zoom in seguidos, con una relacion x2, centrado en las coordenadas del click del mouse.

Los archivos zoomout1.php, zoomout2.php, zoomout3.php y zoomout4.php generan el zoom out a una escala x2, centrado en las coordenadas del click del mouse.

Los archivos recenter1.php, recenter2.php, recenter3.php, recenter4.php y recenter5.php centran la imagen en las coordenadas del click del mouse.

Los archivos generazoom0.php, generazoom1.php, generazoom2.php, generazoom3.php, generazoom4.php y generazoom5.php.php son los que usan las librerias de GD para generar la imagen acercada x2.

Los archivos generazoomout1.php, generazoomout2.php, generazoomout3.php y generazoomout4.php son los que usan las librerias de GD para generar la imagen alejada x2.

Los archivos generarecenter1.php, generarecenter2.php, generarecenter3.php, generarecenter4.php y generarecenter5.php son los que usan las librerias de GD para generar la imagen recentrada a la misma escala.

Por ultimo, los archivos opc_zoom0.php, opc_zoom1.php, opc_zoom2.php, opc_zoom3.php, opc_zoom4.php y opc_zoom5.php deciden que accion realizar en base a la seleccion entre zoom in, zoom out, recentrad y salir (el archivo salir.php no hace nada, solo muestra un "FIN").

Algo que debo aclarar es que del nivel de zoom2 al nivel de zoom3 dejo de usar el mapa Mdeo_1000x724.gd2 y paso a usar un mapa Mdeo_10000x7236.gd2, el cual es el que les comente al principio de toda esta consulta. el cambio es debido mas que nada para dar mas detalle al usuario al realizar acercamientos en escala x8 o superior.

Codigo:

ARCHIVO ZOOM0.PHP
<?
session_register("x_real");
session_register("y_real");
session_register("x_imagen");
session_register("y_imagen");
session_register("factor");

$x_real = 1000; // Ancho real en pixeles de la imagen original.
$y_real = 724; // Alto real en pixeles de la imagen original.
$factor = 0.7; // factor = x1_imagen / x_real = y1_imagen / y_real.
$x_imagen = floor($factor * $x_real); // Ancho en pantalla en pixeles de la imagen a mostrar.
$y_imagen = floor($factor * $y_real); // Alto en pantalla en pixeles de la imagen a mostrar.
?>

<body bgcolor="#000000"</body>
<FORM METHOD="POST" ACTION="opc_zoom0.php">

<table border="7" bgcolor="Silver" bordercolor="blue" align="center" cellspacing="2" cellpadding="6">
<tr>
<td>
Escoja Opcion: <br clear=left> <br clear=left>
<input type="radio" checked name="Operacion" value="Zoom In">Zoom In <br clear=left> <br clear=left>
<input type="radio" disabled name="Operacion" value="Zoom Out">Zoom Out <br clear=left> <br clear=left>
<input type="radio" disabled name="Operacion" value="Recenter">Recenter <br clear=left> <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Quit">Quit
</td>
<td>
<INPUT TYPE="IMAGE" SRC="generazoom0.php" ALIGN="RIGHT" WIDTH="<? echo $x_imagen ?>" HEIGHT="<? echo $y_imagen ?>" NAME="mapa">
</td>
</tr>
</table>
</FORM>

ARCHIVO ZOOM1.PHP
<?php
session_register("x1_zoom");
session_register("y1_zoom");
$x1_zoom = floor($x_real / 2);
$y1_zoom = floor($y_real / 2);
?>

<body bgcolor="#000000"</body>
<FORM METHOD="POST" ACTION="opc_zoom1.php">
<table border="7" bgcolor="Silver" bordercolor="blue" align="center" cellspacing="2" cellpadding="6">
<tr>
<td>
Escoja Opcion: <br clear=left> <br clear=left>
<input type="radio" checked name="Operacion" value="Zoom In">Zoom In <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Zoom Out">Zoom Out <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Recenter">Recenter <br clear=left> <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Quit">Quit
</td>
<td>
<INPUT TYPE="IMAGE" SRC="generazoom1.php?x1_global=<? echo floor($click_x / $factor)?>&y1_global=<? echo floor($click_y / $factor)?>" ALIGN="RIGHT" WIDTH="<? echo $x_imagen?>" HEIGHT="<? echo $y_imagen?>" NAME="mapa">
</td>
</tr>
</table>
</form>

ARCHIVO ZOOM2.PHP
<?php
session_register("x2_zoom");
session_register("y2_zoom");
$x2_zoom = floor($x_real / 4);
$y2_zoom = floor($y_real / 4);
?>

<body bgcolor="#000000"</body>
<FORM METHOD="POST" ACTION="opc_zoom2.php">
<table border="7" bgcolor="Silver" bordercolor="blue" align="center" cellspacing="2" cellpadding="6">
<tr>
<td>
Escoja Opcion: <br clear=left> <br clear=left>
<input type="radio" checked name="Operacion" value="Zoom In">Zoom In <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Zoom Out">Zoom Out <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Recenter">Recenter <br clear=left> <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Quit">Quit
</td>
<td>
<INPUT TYPE="IMAGE" SRC="generazoom2.php?x2_global=<? echo $x1_origen + floor($click_x / (2 * $factor))?>&y2_global=<? echo $y1_origen + floor($click_y / (2 * $factor))?>" ALIGN="RIGHT" WIDTH="<? echo $x_imagen?>" HEIGHT="<? echo $y_imagen?>" NAME="mapa">
</td>
</tr>
</table>
</form>

ARCHIVO ZOOM3.PHP
<?php
session_register("x3_zoom");
session_register("y3_zoom");
$x3_zoom = floor($x_real / 8);
$y3_zoom = floor($y_real / 8);
?>

<body bgcolor="#000000"</body>
<FORM METHOD="POST" ACTION="opc_zoom3.php">
<table border="7" bgcolor="Silver" bordercolor="blue" align="center" cellspacing="2" cellpadding="6">
<tr>
<td>
Escoja Opcion: <br clear=left> <br clear=left>
<input type="radio" checked name="Operacion" value="Zoom In">Zoom In <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Zoom Out">Zoom Out <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Recenter">Recenter <br clear=left> <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Quit">Quit
</td>
<td>
<INPUT TYPE="IMAGE" SRC="generazoom3.php?x3_global=<? echo $x2_origen + floor($click_x / (4 * $factor))?>&y3_global=<? echo $y2_origen + floor($click_y / (4 * $factor))?>" ALIGN="RIGHT" WIDTH="<? echo $x_imagen?>" HEIGHT="<? echo $y_imagen?>" NAME="mapa">
</td>
</tr>
</table>
</form>

ARCHIVO ZOOM4.PHP
<?php
session_register("x4_zoom");
session_register("y4_zoom");
$x4_zoom = floor($x_real / 16);
$y4_zoom = floor($y_real / 16);
?>

<body bgcolor="#000000"</body>
<FORM METHOD="POST" ACTION="opc_zoom4.php">
<table border="7" bgcolor="Silver" bordercolor="blue" align="center" cellspacing="2" cellpadding="6">
<tr>
<td>
Escoja Opcion: <br clear=left> <br clear=left>
<input type="radio" checked name="Operacion" value="Zoom In">Zoom In <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Zoom Out">Zoom Out <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Recenter">Recenter <br clear=left> <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Quit">Quit
</td>
<td>
<INPUT TYPE="IMAGE" SRC="generazoom4.php?x4_global=<? echo $x3_origen + floor($click_x / (8 * $factor))?>&y4_global=<? echo $y3_origen + floor($click_y / (8 * $factor))?>" ALIGN="RIGHT" WIDTH="<? echo $x_imagen?>" HEIGHT="<? echo $y_imagen?>" NAME="mapa">
</td>
</tr>
</table>
</form>

ARCHIVO ZOOM5.PHP
<?php
session_register("x5_zoom");
session_register("y5_zoom");
$x5_zoom = floor($x_real / 32);
$y5_zoom = floor($y_real / 32);
?>

<body bgcolor="#000000"</body>
<FORM METHOD="POST" ACTION="opc_zoom5.php">
<table border="7" bgcolor="Silver" bordercolor="blue" align="center" cellspacing="2" cellpadding="6">
<tr>
<td>
Escoja Opcion: <br clear=left> <br clear=left>
<input type="radio" disabled name="Operacion" value="Zoom In">Zoom In <br clear=left> <br clear=left>
<input type="radio" checked name="Operacion" value="Zoom Out">Zoom Out <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Recenter">Recenter <br clear=left> <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Quit">Quit
</td>
<td>
<INPUT TYPE="IMAGE" SRC="generazoom5.php?x5_global=<? echo $x4_origen + floor($click_x / (16 * $factor))?>&y5_global=<? echo $y4_origen + floor($click_y / (16 * $factor))?>" ALIGN="RIGHT" WIDTH="<? echo $x_imagen?>" HEIGHT="<? echo $y_imagen?>" NAME="mapa">
</td>
</tr>
</table>
</form>
  #15 (permalink)  
Antiguo 11/04/2004, 20:18
 
Fecha de Ingreso: abril-2004
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
ARCHIVO GENERAZOOM0.PHP
<?php
session_start();
Header( "Content-type: image/jpeg");
$Imagen_Zoom0 = ImageCreateFromGd2Part("Mdeo_1000x724.gd2", 0, 0, $x_real, $y_real);
ImageJpeg($Imagen_Zoom0);
ImageDestroy($Imagen_Zoom0);
?>

ARCHIVO GENERAZOOM1.PHP
<?php
session_register("x1_origen");
session_register("y1_origen");
Header( "Content-type: image/jpeg");

$x1_origen = $x1_global - ($x1_zoom / 2);
$y1_origen = $y1_global - ($y1_zoom / 2);

if ($x1_origen <= 0)
{
$x1_origen = 0;
}
if ($y1_origen <= 0)
{
$y1_origen = 0;
}
if ($x1_origen >= $x_real - $x1_zoom)
{
$x1_origen = floor($x_real / 2);
}
if ($y1_origen >= $y_real - $y1_zoom)
{
$y1_origen = floor($y_real / 2);
}

$Imagen_Zoom=ImageCreateFromGd2Part("Mdeo_1000x724 .gd2", $x1_origen, $y1_origen, $x1_zoom, $y1_zoom);
ImageJpeg($Imagen_Zoom);
ImageDestroy($Imagen_Zoom);
?>

ARCHIVO GENERAZOOM2.PHP
<?php
session_register("x2_origen");
session_register("y2_origen");
$x2_origen = $x2_global - ($x2_zoom / 2);
$y2_origen = $y2_global - ($y2_zoom / 2);
$x2_zoom = floor($x_real / 4);
$y2_zoom = floor($y_real / 4);

Header( "Content-type: image/jpeg");

if ($x2_origen <= 0)
{
$x2_origen = 0;
}
if ($y2_origen <= 0)
{
$y2_origen = 0;
}
if ($x2_origen >= $x_real - $x2_zoom)
{
$x2_origen = $x_real - floor($x_real / 4);
}
if ($y2_origen >= $y_real - $y2_zoom)
{
$y2_origen = $y_real - floor($y_real / 4);
}

$Imagen_Zoom=ImageCreateFromGd2Part("Mdeo_1000x724 .gd2", $x2_origen, $y2_origen, $x2_zoom, $y2_zoom);
ImageJpeg($Imagen_Zoom);
ImageDestroy($Imagen_Zoom);
?>

ARCHIVO GENERAZOOM3.PHP
<?php

// ATENCION: A PARTIR DEL ZOOM3 SE CAMBIA AL MAPA MDEO_100.GD2 PARA UNA MAYOR RESOLUCION
// EXTO IMPLICA UN FACTOR DE ESCALA EN LAS COORDENADAS DE FACTOR_MAPA=5

session_register("x3_origen");
session_register("y3_origen");
session_register("factor_mapa");
Header( "Content-type: image/jpeg");

$x3_origen = $x3_global - ($x3_zoom / 2);
$y3_origen = $y3_global - ($y3_zoom / 2);

$factor_mapa = 10;

if ($x3_origen <= 0)
{
$x3_origen = 0;
}
if ($y3_origen <= 0)
{
$y3_origen = 0;
}
if ($x3_origen >= $x_real - $x3_zoom)
{
$x3_origen = $x_real - floor($x_real / 8);
}
if ($y3_origen >= $y_real - $y3_zoom)
{
$y3_origen = $y_real - floor($y_real / 8);
}

$Imagen_Zoom=ImageCreateFromGd2Part("Mdeo_100.gd2" , $factor_mapa*$x3_origen, $factor_mapa*$y3_origen, $factor_mapa*$x3_zoom, $factor_mapa*$y3_zoom);
ImageJpeg($Imagen_Zoom);
ImageDestroy($Imagen_Zoom);
?>

ARCHIVO GENERAZOOM4.PHP
<?php

// ATENCION: A PARTIR DEL ZOOM3 SE CAMBIA AL MAPA MDEO_100.GD2 PARA UNA MAYOR RESOLUCION
// EXTO IMPLICA UN FACTOR DE ESCALA EN LAS COORDENADAS DE FACTOR_MAPA=5

session_register("x4_origen");
session_register("y4_origen");
Header( "Content-type: image/jpeg");

$x4_origen = $x4_global - ($x4_zoom / 2);
$y4_origen = $y4_global - ($y4_zoom / 2);

if ($x4_origen <= 0)
{
$x4_origen = 0;
}
if ($y4_origen <= 0)
{
$y4_origen = 0;
}
if ($x4_origen >= $x_real - $x4_zoom)
{
$x4_origen = $x_real - floor($x_real / 16);
}
if ($y4_origen >= $y_real - $y4_zoom)
{
$y4_origen = $y_real - floor($y_real / 16);
}

$Imagen_Zoom=ImageCreateFromGd2Part("Mdeo_100.gd2" , $factor_mapa*$x4_origen, $factor_mapa*$y4_origen, $factor_mapa*$x4_zoom, $factor_mapa*$y4_zoom);
ImageJpeg($Imagen_Zoom);
ImageDestroy($Imagen_Zoom);
?>

ARCHIVO GENERAZOOM5.PHP
<?php

// ATENCION: A PARTIR DEL ZOOM3 SE CAMBIA AL MAPA MDEO_100.GD2 PARA UNA MAYOR RESOLUCION
// EXTO IMPLICA UN FACTOR DE ESCALA EN LAS COORDENADAS DE FACTOR_MAPA=5

session_register("x5_origen");
session_register("y5_origen");
Header( "Content-type: image/jpeg");

$x5_origen = $x5_global - ($x5_zoom / 2);
$y5_origen = $y5_global - ($y5_zoom / 2);

if ($x5_origen <= 0)
{
$x5_origen = 0;
}
if ($y5_origen <= 0)
{
$y5_origen = 0;
}
if ($x5_origen >= $x_real - $x5_zoom)
{
$x5_origen = $x_real - floor($x_real / 32);
}
if ($y5_origen >= $y_real - $y5_zoom)
{
$y5_origen = $y_real - floor($y_real / 32);
}

$Imagen_Zoom=ImageCreateFromGd2Part("Mdeo_100.gd2" , $factor_mapa*$x5_origen, $factor_mapa*$y5_origen, $factor_mapa*$x5_zoom, $factor_mapa*$y5_zoom);
ImageJpeg($Imagen_Zoom);
ImageDestroy($Imagen_Zoom);
?>

ARCHIVO OPC_ZOOM0.PHP
<?
session_start();

if ($Operacion == "Zoom In")
{
header("Location: zoom1.php?click_x=$mapa_x&click_y=$mapa_y");
}

if ($Operacion == "Quit")
{
header("Location: salir.php");
}
?>

ARCHIVO OPC_ZOOM1.PHP
<?
if ($Operacion == "Zoom In")
{
header("Location: zoom2.php?click_x=$mapa_x&click_y=$mapa_y");
}

if ($Operacion == "Zoom Out")
{
header("Location: zoom0.php");
}

if ($Operacion == "Recenter")
{
header("Location: recenter1.php?click_x=$mapa_x&click_y=$mapa_y");
}

if ($Operacion == "Quit")
{
header("Location: salir.php");
}
?>

ARCHIVO OPC_ZOOM2.PHP
<?
session_start();

if ($Operacion == "Zoom In")
{
header("Location: zoom3.php?click_x=$mapa_x&click_y=$mapa_y");
}

if ($Operacion == "Zoom Out")
{

header("Location: zoomout1.php?click_x=$mapa_x&click_y=$mapa_y");
}

if ($Operacion == "Recenter")
{
header("Location: recenter2.php?click_x=$mapa_x&click_y=$mapa_y");
}

if ($Operacion == "Quit")
{
header("Location: salir.php");
}
?>

ARCHIVO OPC_ZOOM3.PHP
<?
if ($Operacion == "Zoom In")
{
header("Location: zoom4.php?click_x=$mapa_x&click_y=$mapa_y");
}

if ($Operacion == "Zoom Out")
{
header("Location: zoomout2.php?click_x=$mapa_x&click_y=$mapa_y");
}

if ($Operacion == "Recenter")
{
header("Location: recenter3.php?click_x=$mapa_x&click_y=$mapa_y");
}

if ($Operacion == "Quit")
{
header("Location: salir.php");
}
?>

ARCHIVO OPC_ZOOM4.PHP
<?
if ($Operacion == "Zoom In")
{
header("Location: zoom5.php?click_x=$mapa_x&click_y=$mapa_y");
}

if ($Operacion == "Zoom Out")
{
header("Location: zoomout3.php?click_x=$mapa_x&click_y=$mapa_y");
}

if ($Operacion == "Recenter")
{
header("Location: recenter4.php?click_x=$mapa_x&click_y=$mapa_y");
}

if ($Operacion == "Quit")
{
header("Location: salir.php");
}
?>

ARCHIVO OPC_ZOOM5.PHP
<?

if ($Operacion == "Zoom Out")
{
header("Location: zoomout4.php?click_x=$mapa_x&click_y=$mapa_y");
}

if ($Operacion == "Recenter")
{
header("Location: recenter5.php?click_x=$mapa_x&click_y=$mapa_y");
}

if ($Operacion == "Quit")
{
header("Location: salir.php");
}
?>

ARCHIVO ZOOMOUT1.PHP
<?php
session_start();
?>

<body bgcolor="#000000"</body>
<FORM METHOD="POST" ACTION="opc_zoom1.php">
<table border="7" bgcolor="Silver" bordercolor="blue" align="center" cellspacing="2" cellpadding="6">
<tr>
<td>
Escoja Opcion: <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Zoom In">Zoom In <br clear=left> <br clear=left>
<input type="radio" checked name="Operacion" value="Zoom Out">Zoom Out <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Recenter">Recenter <br clear=left> <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Quit">Quit
</td>
<td>
<INPUT TYPE="IMAGE" SRC="generazoomout1.php?x1_global=<? echo ($x2_origen + floor($click_x / (4 * $factor))) ?>&y1_global=<? echo ($y2_origen + floor($click_y / (4 * $factor))) ?>" ALIGN="RIGHT" WIDTH="<? echo $x_imagen?>" HEIGHT="<? echo $y_imagen?>" NAME="mapa">
</td>
</tr>
</table>
</form>

ARCHIVO ZOOMOUT2.PHP
<?php
session_start();
?>

<body bgcolor="#000000"</body>
<FORM METHOD="POST" ACTION="opc_zoom2.php">
<table border="7" bgcolor="Silver" bordercolor="blue" align="center" cellspacing="2" cellpadding="6">
<tr>
<td>
Escoja Opcion: <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Zoom In">Zoom In <br clear=left> <br clear=left>
<input type="radio" checked name="Operacion" value="Zoom Out">Zoom Out <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Recenter">Recenter <br clear=left> <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Quit">Quit
</td>
<td>
<INPUT TYPE="IMAGE" SRC="generazoomout2.php?x2_global=<? echo ($x3_origen + floor($click_x / (8 * $factor))) ?>&y2_global=<? echo ($y3_origen + floor($click_y / (8 * $factor))) ?>" ALIGN="RIGHT" WIDTH="<? echo $x_imagen?>" HEIGHT="<? echo $y_imagen?>" NAME="mapa">
</td>
</tr>
</table>
</form>

ARCHIVO ZOOMOUT3.PHP
<?php
session_start();
?>

<body bgcolor="#000000"</body>
<FORM METHOD="POST" ACTION="opc_zoom3.php">
<table border="7" bgcolor="Silver" bordercolor="blue" align="center" cellspacing="2" cellpadding="6">
<tr>
<td>
Escoja Opcion: <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Zoom In">Zoom In <br clear=left> <br clear=left>
<input type="radio" checked name="Operacion" value="Zoom Out">Zoom Out <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Recenter">Recenter <br clear=left> <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Quit">Quit
</td>
<td>
<INPUT TYPE="IMAGE" SRC="generazoomout3.php?x3_global=<? echo ($x4_origen + floor($click_x / (16 * $factor))) ?>&y3_global=<? echo ($y4_origen + floor($click_y / (16 * $factor))) ?>" ALIGN="RIGHT" WIDTH="<? echo $x_imagen?>" HEIGHT="<? echo $y_imagen?>" NAME="mapa">
</td>
</tr>
</table>
</form>
  #16 (permalink)  
Antiguo 11/04/2004, 20:21
 
Fecha de Ingreso: abril-2004
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
ARCHIVO ZOOMOUT4.PHP
<?php
session_start();
?>

<body bgcolor="#000000"</body>
<FORM METHOD="POST" ACTION="opc_zoom4.php">
<table border="7" bgcolor="Silver" bordercolor="blue" align="center" cellspacing="2" cellpadding="6">
<tr>
<td>
Escoja Opcion: <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Zoom In">Zoom In <br clear=left> <br clear=left>
<input type="radio" checked name="Operacion" value="Zoom Out">Zoom Out <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Recenter">Recenter <br clear=left> <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Quit">Quit
</td>
<td>
<INPUT TYPE="IMAGE" SRC="generazoomout4.php?x4_global=<? echo ($x5_origen + floor($click_x / (32 * $factor))) ?>&y4_global=<? echo ($y5_origen + floor($click_y / (32 * $factor))) ?>" ALIGN="RIGHT" WIDTH="<? echo $x_imagen?>" HEIGHT="<? echo $y_imagen?>" NAME="mapa">
</td>
</tr>
</table>
</form>

ARCHIVO GENERAZOOMOUT1.PHP
<?php
session_register("x1_origen");
session_register("y1_origen");
session_register("x1_zoom");
session_register("y1_zoom");

$x1_origen = $x1_global - floor($x1_zoom / 2);
$y1_origen = $y1_global - floor($y1_zoom / 2);
$x1_zoom = floor($x_real / 2);
$y1_zoom = floor($y_real / 2);

Header( "Content-type: image/jpeg");

if ($x1_origen <= 0)
{
$x1_origen = 0;
}
if ($y1_origen <= 0)
{
$y1_origen = 0;
}
if ($x1_origen >= $x_real - $x1_zoom)
{
$x1_origen = floor($x_real / 2);
}
if ($y1_origen >= $y_real - $y1_zoom)
{
$y1_origen = floor($y_real / 2);
}

$Imagen_Zoom=ImageCreateFromGd2Part("Mdeo_1000x724 .gd2", $x1_origen, $y1_origen, $x1_zoom, $y1_zoom);
ImageJpeg($Imagen_Zoom);
ImageDestroy($Imagen_Zoom);
?>

ARCHIVO GENERAZOOMOUT2.PHP<?php
session_register("x2_origen");
session_register("y2_origen");
session_register("x2_zoom");
session_register("y2_zoom");

$x2_origen = $x2_global - floor($x2_zoom / 2);
$y2_origen = $y2_global - floor($y2_zoom / 2);
$x2_zoom = floor($x_real / 4);
$y2_zoom = floor($y_real / 4);

Header( "Content-type: image/jpeg");

if ($x2_origen <= 0)
{
$x2_origen = 0;
}
if ($y2_origen <= 0)
{
$y2_origen = 0;
}
if ($x2_origen >= $x_real - $x2_zoom)
{
$x2_origen = $x_real - floor($x_real / 4);
}
if ($y2_origen >= $y_real - $y2_zoom)
{
$y2_origen = $y_real - floor($y_real / 4);
}

$Imagen_Zoom=ImageCreateFromGd2Part("Mdeo_1000x724 .gd2", $x2_origen, $y2_origen, $x2_zoom, $y2_zoom);
ImageJpeg($Imagen_Zoom);
ImageDestroy($Imagen_Zoom);
?>


ARCHIVO GENERAZOOMOUT3.PHP
<?php

// CAMBIO DE MAPA A MDEO_100.GD2 CON MAYOR RESOLUCION
session_register("x3_origen");
session_register("y3_origen");
session_register("x3_zoom");
session_register("y3_zoom");

$x3_origen = $x3_global - floor($x3_zoom / 2);
$y3_origen = $y3_global - floor($y3_zoom / 2);
$x3_zoom = floor($x_real / 8);
$y3_zoom = floor($y_real / 8);

Header( "Content-type: image/jpeg");

if ($x3_origen <= 0)
{
$x3_origen = 0;
}
if ($y3_origen <= 0)
{
$y3_origen = 0;
}
if ($x3_origen >= $x_real - $x3_zoom)
{
$x3_origen = $x_real - floor($x_real / 8);
}
if ($y3_origen >= $y_real - $y3_zoom)
{
$y3_origen = $y_real - floor($y_real / 8);
}

$Imagen_Zoom=ImageCreateFromGd2Part("Mdeo_100.gd2" , $factor_mapa * $x3_origen, $factor_mapa * $y3_origen, $factor_mapa * $x3_zoom, $factor_mapa * $y3_zoom);
ImageJpeg($Imagen_Zoom);
ImageDestroy($Imagen_Zoom);
?>


ARCHIVO GENERAZOOMOUT4.PHP
php

// CAMBIO DE MAPA A MDEO_100.GD2 CON MAYOR RESOLUCION
session_register("x4_origen");
session_register("y4_origen");
session_register("x4_zoom");
session_register("y4_zoom");

$x4_origen = $x4_global - floor($x4_zoom / 2);
$y4_origen = $y4_global - floor($y4_zoom / 2);
$x4_zoom = floor($x_real / 16);
$y4_zoom = floor($y_real / 16);

Header( "Content-type: image/jpeg");

if ($x4_origen <= 0)
{
$x4_origen = 0;
}
if ($y4_origen <= 0)
{
$y4_origen = 0;
}
if ($x4_origen >= $x_real - $x4_zoom)
{
$x4_origen = $x_real - floor($x_real / 16);
}
if ($y4_origen >= $y_real - $y4_zoom)
{
$y4_origen = $y_real - floor($y_real / 16);
}

$Imagen_Zoom=ImageCreateFromGd2Part("Mdeo_100.gd2" , $factor_mapa * $x4_origen, $factor_mapa * $y4_origen, $factor_mapa * $x4_zoom, $factor_mapa * $y4_zoom);
ImageJpeg($Imagen_Zoom);
ImageDestroy($Imagen_Zoom);
?>


ARCHIVO RECENTER1.PHP
<?php
session_register("x1_zoom");
session_register("y1_zoom");
$x1_zoom = floor($x_real / 2);
$y1_zoom = floor($y_real / 2);
?>

<body bgcolor="#000000"</body>
<FORM METHOD="POST" ACTION="opc_zoom1.php">
<table border="7" bgcolor="Silver" bordercolor="blue" align="center" cellspacing="2" cellpadding="6">
<tr>
<td>
Escoja Opcion: <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Zoom In">Zoom In <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Zoom Out">Zoom Out <br clear=left> <br clear=left>
<input type="radio" checked name="Operacion" value="Recenter">Recenter <br clear=left> <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Quit">Quit
</td>
<td>
<INPUT TYPE="IMAGE" SRC="generarecenter1.php?x1_global=<? echo ($x1_origen + floor($click_x / (2 * $factor))) ?>&y1_global=<? echo ($y1_origen + floor($click_y / (2 * $factor))) ?>" ALIGN="RIGHT" WIDTH="<? echo $x_imagen?>" HEIGHT="<? echo $y_imagen?>" NAME="mapa">
</td>
</tr>
</table>
</form>
<?
echo "x1_global: ".($x1_origen + floor($click_x / (2*$factor)))."<br>";
echo "y1_global: ".($y1_origen + floor($click_y / (2*$factor)));
?>


ARCHIVO RECENTER2.PHP
<?php
session_register("x2_zoom");
session_register("y2_zoom");
$x2_zoom = floor($x_real / 4);
$y2_zoom = floor($y_real / 4);
?>

<body bgcolor="#000000"</body>
<FORM METHOD="POST" ACTION="opc_zoom2.php">
<table border="7" bgcolor="Silver" bordercolor="blue" align="center" cellspacing="2" cellpadding="6">
<tr>
<td>
Escoja Opcion: <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Zoom In">Zoom In <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Zoom Out">Zoom Out <br clear=left> <br clear=left>
<input type="radio" checked name="Operacion" value="Recenter">Recenter <br clear=left> <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Quit">Quit
</td>
<td>
<INPUT TYPE="IMAGE" SRC="generarecenter2.php?x2_global=<? echo ($x2_origen + floor($click_x / (4 * $factor))) ?>&y2_global=<? echo ($y2_origen + floor($click_y / (4 * $factor))) ?>" ALIGN="RIGHT" WIDTH="<? echo $x_imagen?>" HEIGHT="<? echo $y_imagen?>" NAME="mapa">
</td>
</tr>
</table>
</form>

ARCHIVO RECENTER3.PHP
<?php
session_register("x3_zoom");
session_register("y3_zoom");
$x3_zoom = floor($x_real / 8);
$y3_zoom = floor($y_real / 8);
?>

<body bgcolor="#000000"</body>
<FORM METHOD="POST" ACTION="opc_zoom3.php">
<table border="7" bgcolor="Silver" bordercolor="blue" align="center" cellspacing="2" cellpadding="6">
<tr>
<td>
Escoja Opcion: <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Zoom In">Zoom In <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Zoom Out">Zoom Out <br clear=left> <br clear=left>
<input type="radio" checked name="Operacion" value="Recenter">Recenter <br clear=left> <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Quit">Quit
</td>
<td>
<INPUT TYPE="IMAGE" SRC="generarecenter3.php?x3_global=<? echo ($x3_origen + floor($click_x / (8 * $factor))) ?>&y3_global=<? echo ($y3_origen + floor($click_y / (8 * $factor))) ?>" ALIGN="RIGHT" WIDTH="<? echo $x_imagen?>" HEIGHT="<? echo $y_imagen?>" NAME="mapa">
</td>
</tr>
</table>
</form>

ARCHIVO RECENTER4.PHP
<?php
session_register("x4_zoom");
session_register("y4_zoom");
$x4_zoom = floor($x_real / 16);
$y4_zoom = floor($y_real / 16);
?>

<body bgcolor="#000000"</body>
<FORM METHOD="POST" ACTION="opc_zoom4.php">
<table border="7" bgcolor="Silver" bordercolor="blue" align="center" cellspacing="2" cellpadding="6">
<tr>
<td>
Escoja Opcion: <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Zoom In">Zoom In <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Zoom Out">Zoom Out <br clear=left> <br clear=left>
<input type="radio" checked name="Operacion" value="Recenter">Recenter <br clear=left> <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Quit">Quit
</td>
<td>
<INPUT TYPE="IMAGE" SRC="generarecenter4.php?x4_global=<? echo ($x4_origen + floor($click_x / (16 * $factor))) ?>&y4_global=<? echo ($y4_origen + floor($click_y / (16 * $factor))) ?>" ALIGN="RIGHT" WIDTH="<? echo $x_imagen?>" HEIGHT="<? echo $y_imagen?>" NAME="mapa">
</td>
</tr>
</table>
</form>
  #17 (permalink)  
Antiguo 11/04/2004, 20:29
 
Fecha de Ingreso: abril-2004
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
ARCHIVO RECENTER5.PHP
<?php
session_register("x5_zoom");
session_register("y5_zoom");
$x5_zoom = floor($x_real / 32);
$y5_zoom = floor($y_real / 32);
?>

<body bgcolor="#000000"</body>
<FORM METHOD="POST" ACTION="opc_zoom5.php">
<table border="7" bgcolor="Silver" bordercolor="blue" align="center" cellspacing="2" cellpadding="6">
<tr>
<td>
Escoja Opcion: <br clear=left> <br clear=left>
<input type="radio" disabled name="Operacion" value="Zoom In">Zoom In <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Zoom Out">Zoom Out <br clear=left> <br clear=left>
<input type="radio" checked name="Operacion" value="Recenter">Recenter <br clear=left> <br clear=left> <br clear=left>
<input type="radio" name="Operacion" value="Quit">Quit
</td>
<td>
<INPUT TYPE="IMAGE" SRC="generarecenter5.php?x5_global=<? echo ($x5_origen + floor($click_x / (32 * $factor))) ?>&y5_global=<? echo ($y5_origen + floor($click_y / (32 * $factor))) ?>" ALIGN="RIGHT" WIDTH="<? echo $x_imagen?>" HEIGHT="<? echo $y_imagen?>" NAME="mapa">
</td>
</tr>
</table>
</form>

ARCHIVO GENERARECENTER1.PHP
<?php
session_register("x1_origen");
session_register("y1_origen");

Header( "Content-type: image/jpeg");

$x1_origen = $x1_global - ($x1_zoom / 2);
$y1_origen = $y1_global - ($y1_zoom / 2);

if ($x1_origen <= 0)
{
$x1_origen = 0;
}
if ($y1_origen <= 0)
{
$y1_origen = 0;
}
if ($x1_origen >= $x_real - $x1_zoom)
{
$x1_origen = floor($x_real / 2);
}
if ($y1_origen >= $y_real - $y1_zoom)
{
$y1_origen = floor($y_real / 2);
}

$Imagen_Zoom=ImageCreateFromGd2Part("Mdeo_1000x724 .gd2", $x1_origen, $y1_origen, $x1_zoom, $y1_zoom);
ImageJpeg($Imagen_Zoom);
ImageDestroy($Imagen_Zoom);
?>

ARCHIVO GENERARECENTER2.PHP
<?php
session_register("x2_origen");
session_register("y2_origen");

Header( "Content-type: image/jpeg");

$x2_origen = $x2_global - ($x2_zoom / 2);
$y2_origen = $y2_global - ($y2_zoom / 2);

if ($x2_origen <= 0)
{
$x2_origen = 0;
}
if ($y2_origen <= 0)
{
$y2_origen = 0;
}
if ($x2_origen >= $x_real - $x2_zoom)
{
$x2_origen = $x_real - floor($x_real / 4);
}
if ($y2_origen >= $y_real - $y2_zoom)
{
$y2_origen = $y_real - floor($y_real / 4);
}

$Imagen_Zoom=ImageCreateFromGd2Part("Mdeo_1000x724 .gd2", $x2_origen, $y2_origen, $x2_zoom, $y2_zoom);
ImageJpeg($Imagen_Zoom);
ImageDestroy($Imagen_Zoom);
?>

ARCHIVO GENERARECENTER3.PHP
<?php
session_register("x3_origen");
session_register("y3_origen");

Header( "Content-type: image/jpeg");

$x3_origen = $x3_global - ($x3_zoom / 2);
$y3_origen = $y3_global - ($y3_zoom / 2);

if ($x3_origen <= 0)
{
$x3_origen = 0;
}
if ($y3_origen <= 0)
{
$y3_origen = 0;
}
if ($x3_origen >= $x_real - $x3_zoom)
{
$x3_origen = $x_real - floor($x_real / 8);
}
if ($y3_origen >= $y_real - $y3_zoom)
{
$y3_origen = $y_real - floor($y_real / 8);
}

$Imagen_Zoom=ImageCreateFromGd2Part("Mdeo_100.gd2" , $factor_mapa*$x3_origen, $factor_mapa*$y3_origen, $factor_mapa*$x3_zoom, $factor_mapa*$y3_zoom);
ImageJpeg($Imagen_Zoom);
ImageDestroy($Imagen_Zoom);
?>

ARCHIVO GENERARECENTER4.PHP
<?php
session_register("x4_origen");
session_register("y4_origen");

Header( "Content-type: image/jpeg");

$x4_origen = $x4_global - ($x4_zoom / 2);
$y4_origen = $y4_global - ($y4_zoom / 2);

if ($x4_origen <= 0)
{
$x4_origen = 0;
}
if ($y4_origen <= 0)
{
$y4_origen = 0;
}
if ($x4_origen >= $x_real - $x4_zoom)
{
$x4_origen = $x_real - floor($x_real / 16);
}
if ($y4_origen >= $y_real - $y4_zoom)
{
$y4_origen = $y_real - floor($y_real / 16);
}

$Imagen_Zoom=ImageCreateFromGd2Part("Mdeo_100.gd2" , $factor_mapa*$x4_origen, $factor_mapa*$y4_origen, $factor_mapa*$x4_zoom, $factor_mapa*$y4_zoom);
ImageJpeg($Imagen_Zoom);
ImageDestroy($Imagen_Zoom);
?>

ARCHIVO GENERARECENTER5.PHP
<?php
session_register("x5_origen");
session_register("y5_origen");

Header( "Content-type: image/jpeg");

$x5_origen = $x5_global - ($x5_zoom / 2);
$y5_origen = $y5_global - ($y5_zoom / 2);

if ($x5_origen <= 0)
{
$x5_origen = 0;
}
if ($y5_origen <= 0)
{
$y5_origen = 0;
}
if ($x5_origen >= $x_real - $x5_zoom)
{
$x5_origen = $x_real - floor($x_real / 32);
}
if ($y5_origen >= $y_real - $y5_zoom)
{
$y5_origen = $y_real - floor($y_real / 32);
}

$Imagen_Zoom=ImageCreateFromGd2Part("Mdeo_100.gd2" , $factor_mapa*$x5_origen, $factor_mapa*$y5_origen, $factor_mapa*$x5_zoom, $factor_mapa*$y5_zoom);
ImageJpeg($Imagen_Zoom);
ImageDestroy($Imagen_Zoom);
?>

ARCHIVO SALIR.PHP
Fin



Bueno, este es el fin de tanto codigo.
Pensando en el uso que le puedan dar, esto estaba pensado originalmente para realizar zooms sobre un mapa geografico, por lo que en realidad, pueden usar la imagen que deseen, siempre y cuando cambien el tamaño original de la misma en las variables $x_real y $y_real.
La idea es que tengan 2 archivos con la misma imagen, con resoluciones diferentes, asi cuando necesiten un zoom in de buena calidad puedan usar la que tiene mejor resolucion.
Entonces deberan definir nuevamente en zoom3.php las variables $x_real y $y_real respecto a la imagen de mayor tamaño.
Para pasar las imagenes a formato gd2 les recomiendo bajarse el zip que ofrecen en www.boutell.com/gd, para Windows (dll Windows). Dentro de ese zip hay un archivo que se llama pngtogd2.exe. Este archivo les convierte el formato de imagen PNG a un formato interno de las librerias de GD llamado GD2, el cual consume mucha menos RAM que los PNG o JPG.
La sintaxis a usar es:

pngtogd2.exe Arch_png.png Arch_gd2.gd2 256 1

El 256 no se que miercoles es, pero viene recomendado por el mismo Boutell, asi que no lo toquen. El 1 indica si quieren la imagen comprimida o no (1 = No Comprimida).

Bueno, creo que mas nada. Cualquier duda ya saben, escriben por aca o a [email protected].

De nuevo, gracias por la ayuda brindada y por contestar tan rapido!

Un abrazo a todos!

Marcelo.
  #18 (permalink)  
Antiguo 11/04/2004, 21:07
 
Fecha de Ingreso: abril-2004
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
Una ultima cosa que me olvidaba!!!
En alguno de los archivos hay una variable $factor_mapa = 10, que hace referencia a la relacion entre el mapa pequeño Mdeo_1000x724.gd2 y Mdeo_10000x7236.gd2. Como ven $factor_mapa = escala mapa grande / escala mapa chico.

Tengan en cuenta eso cuando vayan a usar una imagen cualquiera, ya que sino cuando vayan a entrar en el zoom3 o superior no les va a enfocar bien la imagen!

Suerte!

Marcelo.
  #19 (permalink)  
Antiguo 12/04/2004, 09:07
 
Fecha de Ingreso: marzo-2004
Ubicación: $_SERVER['DOCUMENT_ROOT'] :-)
Mensajes: 100
Antigüedad: 13 años, 8 meses
Puntos: 0
Hola de nuevo Marcelo,

mira, primeramente te felicito por tus scripts, no los he probado aun pero confio que tus desveladas haciendo pruebas han resultado en un script que funciona como tu lo querias.

no se por que, pero a mi me parece que has trabajado un poquito de mas.

la ventaja que tienes ahora es que ya has comprendido la logica del procedimiento para acercarte, alejarte y centrarte en una imagen, pero estoy segura que valiendote un poco de otras herramientas (sesiones y clases) podrías terminar con UN SOLO script para hacer todo el trabajo...

zoom.class.php

Mas tarde le doy un vistazo a fondo a tus archivos y te complemento este comentario.
__________________
-- girls.code.better --
  #20 (permalink)  
Antiguo 12/04/2004, 10:53
 
Fecha de Ingreso: abril-2004
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
Si, estas en lo cierto.
De seguro se pueda definir algun tipo de funcion a la cual le pase el nombre del archivo imagen, las escalas del zoom y algun otro parametro y pueda usarla recursivamente, pero realmente era ponerse a investigar mas alla del tiempo que tenia y me resulto mas facil copiar y pegar. Digamos que para muchas cosas de la vida hay dos metodos: el metodo inteligente y el metodo topadora. Yo elegi el segundo, primero porque en PHP apenas estoy comenzando a hacer mis primeras herramientas (me meti en esto hace tan solo un mes) y segundo porque sabia que copiando y pegando iba a funcionar seguro.
Para hacerlo recursivo seguramente tendria que estudiar mas en detalle como saber en cada ejecucion de la funcion zoomin zoomout o recentrado en qué escala estoy, asi saber luego a que escala pasar. Desconozco el uso de las clases en PHP. Tendre que leer un poquito mas, pero al menos con esto me da y sobra para lo que queria hacer. Si algun dia mejoras este script y lo haces recursivo no te olvides de este uruguayo perdido!

Un abrazo!

Marcelo.

Cita:
Mensaje Original por codergirl
Hola de nuevo Marcelo,

mira, primeramente te felicito por tus scripts, no los he probado aun pero confio que tus desveladas haciendo pruebas han resultado en un script que funciona como tu lo querias.

no se por que, pero a mi me parece que has trabajado un poquito de mas.

la ventaja que tienes ahora es que ya has comprendido la logica del procedimiento para acercarte, alejarte y centrarte en una imagen, pero estoy segura que valiendote un poco de otras herramientas (sesiones y clases) podrías terminar con UN SOLO script para hacer todo el trabajo...

zoom.class.php

Mas tarde le doy un vistazo a fondo a tus archivos y te complemento este comentario.
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:21.