Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/04/2004, 14:55
mbaz
 
Fecha de Ingreso: abril-2004
Mensajes: 20
Antigüedad: 20 años
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]