Foros del Web » Programando para Internet » PHP »

imagemagick: se demora mucho en procesar.

Estas en el tema de imagemagick: se demora mucho en procesar. en el foro de PHP en Foros del Web. Hola amigo es correcto esta sintaxis sobre windows y estoy probando el imagemagick pero la pagina que lo ejecuta tarda mucho en terminar pero mas ...
  #1 (permalink)  
Antiguo 22/08/2006, 10:55
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
imagemagick: se demora mucho en procesar.

Hola amigo es correcto esta sintaxis sobre windows y estoy probando
el imagemagick pero la pagina que lo ejecuta tarda mucho en terminar
pero mas sin enbargo la imagen ya le creo que sera???

<?php
$rutaconver="c:\ImageMagick-6.2.7-Q16\convert.exe";

system("$rutaconver D:/phpprogramas/WWW/site/morpheus/Fotos_Usuarios/gpacheco/snoopy.bmp D:/phpprogramas/WWW/site/morpheus/Fotos_Usuarios/gpacheco/snoopy.jpg");
?>
__________________
gerardo
  #2 (permalink)  
Antiguo 22/08/2006, 12:18
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
galeria de imagenes incluyendo tif

Hola amigos tengo un problema estoy haciendo un visualizador de imagenes
uso gd2 para presentar al usuario en el navegador una miniatura todo va muy bien el problema es cuando hay imagenes bmp y tif estoy usando el ImageMagick pero veo que es muy lento y tarda mucho en cargar la pgina
habra otra manera de cambiar el formato solo para visualizar esa imagen sin modificar la original

saludos
espero sus comentarios
__________________
gerardo
  #3 (permalink)  
Antiguo 22/08/2006, 12:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No, .. salvo que te busques otra aplicación externa a PHP que haga tu conversión.

Deberías plantearte también que tamaños de imagenes gestionas e incluso de NO generar esos "thumbnails" al vuelo (según las pides) sino en generarlos cuando subes tus imagenes (por un script PHP? .. o lo haces por FTP directo u otro médio?) .. así ese proceso lo harás una sóla vez (o hasta que modifiquen la imagen original).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 22/08/2006, 12:52
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
en realidad la aplicacion lo que hace es leer un directorio de un usuario que este las subio atraves del shell de windows osea una carpeta compartida y de ahi atravez del web visualzara todas sus imagenes de sus directorio entonces hago un recorrido de su directorio y lo que hago para presentar la miniatura es primero una vez que encuentre una imagen realizo una condicion que si es formato soportado por gd si en caso de que sea bmp o tif ejecuto esto

$rutaconver="c:\ImageMagick-6.2.7-Q16\convert.exe -resample 96 -resize 120";

system("$rutaconver D:/phpprogramas/WWW/foto/morpheus/Fotos_Usuarios/gpacheco/negra.tif D:/phpprogramas/WWW/foto/morpheus/Fotos_Usuarios/gpacheco/negra.jpg");

claro el nombre de la imagen y el directorio gpacheco/negra.tif es dinamico
el detalle es que si hace el proceso pero la pagina se alenta y no tiene para cuando terminar que sera lo estare haciendo mal o si tienes algun ejemplo al cual me pueda guiar desde php

saludos y gracias por contestar
__________________
gerardo
  #5 (permalink)  
Antiguo 22/08/2006, 12:53
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
el system(); es para ejecutar comandos en el servidor y ahi no veo ningun comando solo direcciones de archivos me parece q noe sta bien eso
saludos
  #6 (permalink)  
Antiguo 22/08/2006, 13:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero .. el proceso . . aunque se demore tiempo .. lo llega hacer?.

¡Haz considerado dar más tiempo de ejecución a tu script (set_time_limit()) .. ?

¿Tú has probado ejecutar tu proceso directamente y comprobar lo que tarda en ejecutarse por imagen (para calcular en función del total de imagenes que tienes?)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 22/08/2006, 13:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por emiliodeg Ver Mensaje
el system(); es para ejecutar comandos en el servidor y ahi no veo ningun comando solo direcciones de archivos me parece q noe sta bien eso
saludos
El comando es "convert.exe" (es ImageMagick .. una aplicación para conversión de formatos gráficos que se puede ejecutar por línea de comandos).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 22/08/2006, 14:34
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
sip llegar hacer el proceso pero solo me doy cuenta cuando veo en tiempo real en el directorio se crea el archivo pero en la aplicacion se queda ahi aun sin terminar el proceso



Cita:
Iniciado por Cluster Ver Mensaje
Pero .. el proceso . . aunque se demore tiempo .. lo llega hacer?.

¡Haz considerado dar más tiempo de ejecución a tu script (set_time_limit()) .. ?

¿Tú has probado ejecutar tu proceso directamente y comprobar lo que tarda en ejecutarse por imagen (para calcular en función del total de imagenes que tienes?)

Un saludo,
__________________
gerardo
  #9 (permalink)  
Antiguo 22/08/2006, 14:36
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
hola emiliodeg el comandoi es este
$rutaconver="c:\ImageMagick-6.2.7-Q16\convert.exe -resample 96 -resize 120";



Cita:
Iniciado por emiliodeg Ver Mensaje
el system(); es para ejecutar comandos en el servidor y ahi no veo ningun comando solo direcciones de archivos me parece q noe sta bien eso
saludos
__________________
gerardo
  #10 (permalink)  
Antiguo 22/08/2006, 14:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero .. insisto .. PHP termina el proceso si o no? y devuelve el control a tu cliente (navegador) .. ?

Tal vez deberías publicar todo tu código .. por qué realmente no sé vé que estás haciendo. Tampoco contestas a todas las preguntas: ¿usas set_time_limit() o no? para alargar la duracción de ejecución del script .. por si tienes problemas por ahí (pues el proceso puede ser mayor a lo que PHP dá por defecto)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 22/08/2006, 15:08
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
ok ahi les va

Cita:
Iniciado por Cluster Ver Mensaje
Pero .. insisto .. PHP termina el proceso si o no? y devuelve el control a tu cliente (navegador) .. ?

Tal vez deberías publicar todo tu código .. por qué realmente no sé vé que estás haciendo. Tampoco contestas a todas las preguntas: ¿usas set_time_limit() o no? para alargar la duracción de ejecución del script .. por si tienes problemas por ahí (pues el proceso puede ser mayor a lo que PHP dá por defecto)

Un saludo,
__________________
gerardo
  #12 (permalink)  
Antiguo 22/08/2006, 15:10
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
solo cuando se encuentra un tif o bmp

introduzcan png,gify jpg todo va bien pero si meten un tiff o un bmp chequen la carpeta $destino que indico veran que la nueva imagen si esta pero el scritp se queda aun sin terminar
espero que me puedan entender

<?php

$director_inicial="D:/phpprogramas/WWW/sitio.mx/morpheus/Fotos_Usuarios/gpacheco/";
//ruta de respaldo
$destino="D:/phpprogramas/WWW/sitio.mx/morpheus/Foto_Temp/";

//definimos el nombre del script que genera los thumails
$thumnail="prueba2.php";

//definimos el ancho de las imagenes
$width = 100;
$height = 100;
//tiempo
$tiempo=date("h:i:s");

//definimos el nombre del directorio en el que se encuentran las imágenes temp
$dir_principal=$destino;

$dir=opendir($director_inicial);
if($dir)
{
//$path=$arbol[$i];
$path=$director_inicial;

//leemos el contenido del directorio
$cade_image="thum";
while (false !== ($file = readdir($dir)))
{

$validar=explode('/',$tipo);
list($im_an, $im_al, $ext, $atr)=getimagesize($path.$file);
if(($file!='.')&&($file!='..'))
{
$divnum++;
if(eregi($ext,"6||7||8"))
{
$hay++;
$origen=$path.$file;
$soloname=explode(".",$file);
$thum_temporal=$destino."temp_".$usuario."_".$solo name[0].".jpg";
//$thum_temporal2=$destino."temp_2".$usuario."_".$so loname[0].".jpg";


//ruta del ImageMagick
$rutaconver="c:\ImageMagick-6.2.7-Q16\convert.exe -resample 96 -resize 120";
//$rutaconver2="c:\ImageMagick-6.2.7-Q16\convert.exe";

system("$rutaconver $origen $thum_temporal");
//system("$rutaconver2 $origen $thum_temporal2");

//$thumnail_vista="thum_vista.php";
echo "<div class=\"alineamientos_fotos\" id=\"$divnum\">\n";
echo ("<script language=\"javascript\">\n");
echo ("document.write('<IMG SRC=\"$thumnail?filename=$thum_temporal&time=$tiem po&width=$width&height=$height\" WIDTH=\"$width\" HEIGHT=\"$height\" VSPACE=\"8\" class=\"thum\" onmouseover=\"this.className=\'thum_sobre\'\" onmouseout=\"this.className=\'thum_out\'\" onClick=\"hideFrame(\'previewfull\')\" id=\"$idimage\" >');\n");
echo ("document.write('<br>');\n");
echo ("</script>\n");
echo '</div>';
}
else
{
if(eregi($ext,"1||2||3"))
{
$hay++;
$ru=$path.$file;
echo "<div class=\"alineamientos_fotos\" id=\"$divnum\">\n";
echo ("<script language=\"javascript\">\n");
echo ("document.write('<img src=\"$thumnail?filename=$ru&tiempo=$tiempo&width= $width&height=$height\" WIDTH=\"$width\" HEIGHT=\"$height\" VSPACE=\"8\" class=\"thum\" onmouseover=\"this.className=\'thum_sobre\'\" onmouseout=\"this.className=\'thum_out\'\" id=\"$idimage\" onClick=\"hideFrame(\'previewfull\')\" >');\n");
echo ("document.write('<br>');\n");
echo ("</script>\n");
echo '</div>';
}
}


}

}
//cerramos el directorio
closedir($dir);

if($hay==0)
{
echo '<div id="search">';
echo '<ul>';
echo '<img src="Images/dirsearch.gif" width="48" height="48"><br>';
echo '<span class="texmess">¡No se encontraron imagenes en este directorio!</span>';
echo '<br><img src="Images/vacio.gif" width="48" height="48">';
echo '</ul>';
echo '</div>';
}

//}//del for
}
else
{
echo "Error: no se pudo abrir el directorio de imagenes.";
}
?>
__________________
gerardo

Última edición por chalchis; 22/08/2006 a las 15:16
  #13 (permalink)  
Antiguo 22/08/2006, 15:11
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
aqui va el generador de thumnails

<?php
//nombre del archivo prueba2.php
$width=$_GET['width'];
$height=$_GET['height'];
//$width = 80;
//$height = 80;
$filename=trim($_GET['filename']);//imagen a original
$rfisica=realpath($filename);
//verificamos el tipo de imagen
list($ani, $ali, $tipo, $atr)=getimagesize($filename);

//tipos de archivos que captura la variable $tipo
/*
valor-------tipo de imagen
1 = GIF
2 = JPG
3 = PNG
4 = SWF
5 = PSD
6 = BMP
7 = TIFF(intel byte order)
8 = TIFF(motorola byte order)
9 = JPC
10 = JP2
11 = JPX
12 = JB2
13 = SWC
14 = IFF
15 = WBMP
16 = XBM
*/
//creamos segun sea el tipo de imagen

switch($tipo)
{
case 1://gif
$src_image=imagecreatefromgif($filename);//devuelve un id de la imagen
break;
case 2://jpg
$src_image=imagecreatefromjpeg($filename);//devuelve un id de la imagen
break;
case 3://png
$src_image=imagecreatefrompng($filename);//devuelve un id de la imagen
break;

}

//$crear_imagen=imagecreatefromjpeg(';//devuelve un id de la imagen

//imagen desde el archivo
//$src_image=imagecreatefromjpeg($filename);//devuelve un id de la imagen


//$image = imagecreate($width, $height);
$image=ImageCreateTrueColor($width, $height);//creamos la imagen con color real

//asignamos los colores
$bg = imagecolorallocate($image, 216, 216, 235);//para color de fondo
imagefill($image,0,0,$bg); //rellenamos con el color de fondo

//$bg = imagecolorallocate($image, 216, 216, 216);//para color de fondo
//imagefill($image,0,0,$bg);
//imagecolortransparent($image,$bg);

$verde = imagecolorallocate($image, 96, 7, 143);//para el color de la letra

$margin_x = 10;//margen x
$margin_y = 10;//margen y

$w=$width-2*$margin_x;//100
$h=$height-2*$margin_y;//100

$src_w=imagesx($src_image);//aqui obtenemos la anchura de la imagen original apartir del id generado
$src_h=imagesy($src_image);//aqui obtenemos la altura de la imagen original apartir del id generado
if(($w > $src_w) && ($h > $src_h))
{
$dst_w = $src_w;
$dst_h = $src_h;
}
else
{
//¿o escalamos la imagen de acuerdo a la dimensión horizontal?
if(($w/$h) < ($src_w/$src_h))
{
$dst_w=$w;
$dst_h=$w*$src_h/$src_w;
}
else//¿o la escalamos de acuerdo a la dimensión vertical?
{
$dst_w=$h*$src_w/$src_h;
$dst_h=$h;
}
}
//imagecopyresized($image, $src_image, ($width-$dst_w)/2, ($height-$dst_h)/2,0, 0, $dst_w, $dst_h, $src_w, $src_h);
imagecopyresampled($image, $src_image, ($width-$dst_w)/2, ($height-$dst_h)/2,0, 0, $dst_w, $dst_h, $src_w, $src_h);
//colocamos el texto sobre la imagen
imagestring($image, 0, $margin_x, ($height-$margin_y), $tipo, $verde);

//encabezado correspondiente para los datos de salida
switch($tipo)
{
case 1://gif
header("Content-type: image/gif");
imagegif($image);
break;
case 2://jpg
header("Content-type: image/jpeg");
imagejpeg($image);
break;
case 3://png
header("Content-type: image/png");
imagepng($image);
break;
}
//header("Content-type: image/jpeg");


//generamos la imagen
//imagejpeg($image);

//liberamos la memoria
imagedestroy($image);
?>
__________________
gerardo
  #14 (permalink)  
Antiguo 23/08/2006, 11:40
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
saber que esta procesado el system

HOLA AMIGOS sigo con mi problema

sera posible ver que esta procesando el comando system
$rutaconver="c:\ImageMagick-6.2.7-Q16\convert.exe -resample 96 -resize 120";
system("$rutaconver $origen $thum_temporal");

porque, como menciono el proceso de convertir si lo hace pero pues no me muestra la imagen y la pagina no termina de carga y tampoco imprime las demas imagenes, se queda pasmada la pagina ,habra menera de terminar el proceso pero sin terminar el script para que siga recorriendo el directorio


saludos
__________________
gerardo
  #15 (permalink)  
Antiguo 24/08/2006, 12:32
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
hola amigos anteriormente les comente que tenia problemas con el detalle
de ejecutar imagemagick bueno creo que di con el problema y es el session_start de la aplicacion algo le esta haciendo ruido que hace que mi proceso tarde en cargar las imagenes y el html completo

como el session_start(); lo pongo hasta el pincipio del documento hice una prueba comentandolo y poner el valor que me arrojaba la sesion manualmente
y cual fue el resultado todo la aplicacion cargo bien incluyendo las imagenes convertidas por imagemagick

ahora la pregunta donde pongo el session_start();

saludos
__________________
gerardo
  #16 (permalink)  
Antiguo 24/08/2006, 15:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por chalchis Ver Mensaje
hola amigos anteriormente les comente que tenia problemas con el detalle
de ejecutar imagemagick bueno creo que di con el problema y es el session_start de la aplicacion algo le esta haciendo ruido que hace que mi proceso tarde en cargar las imagenes y el html completo

como el session_start(); lo pongo hasta el pincipio del documento hice una prueba comentandolo y poner el valor que me arrojaba la sesion manualmente
y cual fue el resultado todo la aplicacion cargo bien incluyendo las imagenes convertidas por imagemagick

ahora la pregunta donde pongo el session_start();

saludos
Y tu has probado tu código sin las llamadas a system() para intentar ver si session_start() de por sí está originando algún problema?

Por lo demás session_start() debe estar antes de cualquier intento de llamada a una variable de sesión tuya. No sé donde lo usas ni con qué fin ..

(Por cierto . .no veo la llamada a esa función en todo el código que expusistes .. realmente así como te estás dando cuenta no estás entregando todos los antecendentes de tu problema, lo cual no quiere decir que alguien al verlo hubiese dicho "quita para ver como trabaja el código session_start()" . .pero podría ser que sí ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #17 (permalink)  
Antiguo 24/08/2006, 15:39
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
cierto cluster ahorita lo publico
__________________
gerardo
  #18 (permalink)  
Antiguo 24/08/2006, 15:40
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
este es un archivo index.php

<?php
session_start();
if($_POST["txuser"]!=null)
{
$_SESSION["suser"]=trim($_POST['txuser']);//$usuario_autentificado;
$_SESSION["sgenero"]=trim($_POST['txsex']);//$usuario_autentificado;
/*echo '<SCRIPT language="JavaScript">';
echo 'window.location="recorrido.php";';
echo '</SCRIPT>';*/
echo '<HTML>
<HEAD>
<title>Centro Universitario Hispano Mexicano</title>
<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
<TITLE>Centro Universitario Hispano Mexicano</TITLE>
</HEAD>';
echo '<frameset rows="49,*,30" frameborder="NO" border="yes" framespacing="0">
<frame src="arriba.php" name="menu" scrolling="NO" frameborder="0" marginheight="0" marginwidth="0" noresize>
<frameset id="ocultarframe" cols="*,0" frameborder="NO" border="yes" framespacing="0">
<frame src="recorrido.php" name="zona" scrolling="NO" frameborder="0" marginheight="0" marginwidth="0" noresize>
<frame src="captura.php" name="send" scrolling="NO" frameborder="0" marginheight="0" marginwidth="0" noresize>
</frameset>
<frame src="base.php" name="base" scrolling="NO" frameborder="0" marginheight="0" marginwidth="0" noresize>
</frameset></HTML>';
exit();

}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
<input name="txuser" type="text" />
<input name="txsex" type="text" />
<label>
<input type="submit" name="Submit" value="Enviar" />
</label>

</form>
</body>
</html>
__________________
gerardo
  #19 (permalink)  
Antiguo 24/08/2006, 15:41
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
este otro archivo de los frames el principal de todo

recorrido.php
<?php
session_start();
echo "sesion: ".$_SESSION["suser"]."<br>";
echo "genero: ".$_SESSION["sgenero"];
include('conver.php');
$usuario=$_SESSION["suser"];
$director_inicial="D:/phpprogramas/WWW/sitio.mx/morpheus/Fotos_Usuarios/".$usuario."/";
//ruta de respaldo
$destino="D:/phpprogramas/WWW/sitio.mx/morpheus/Foto_Temp/";

//definimos el nombre del script que genera los thumails
$thumnail="prueba2.php";

//definimos el ancho de las imagenes
$width = 100;
$height = 100;
//tiempo
$tiempo=date("his");

//definimos el nombre del directorio en el que se encuentran las imágenes temp
$dir_principal=$destino;

$dir=opendir($director_inicial);
if($dir)
{
//$path=$arbol[$i];
$path=$director_inicial;

//leemos el contenido del directorio
$cade_image="thum";
while (false !== ($file = readdir($dir)))
{

$validar=explode('/',$tipo);
list($im_an, $im_al, $ext, $atr)=getimagesize($path.$file);
if(($file!='.')&&($file!='..'))
{
$divnum++;
if(eregi($ext,"6||7||8"))
{
$hay++;
$origen=$path.$file;
$soloname=explode(".",$file);
$thum_temporal=$destino."temp_".$tiempo.$usuario." _".$soloname[0].".jpg";
//$thum_temporal2=$destino."temp_2".$usuario."_".$so loname[0].".jpg";
//echo $thum_temporal;

transformar($origen,$thum_temporal);
//transformar2($origen,$thum_temporal2);
//ruta del ImageMagick
//$rutaconver="c:/ImageMagick-6.2.7-Q16/convert.exe -resample 96 -resize 120";
//$rutaconver2="c:\ImageMagick-6.2.7-Q16\convert.exe";

//system("$rutaconver $origen $thum_temporal");


//system("$rutaconver2 $origen $thum_temporal2");

//$thumnail_vista="thum_vista.php";

/*echo "<div class=\"alineamientos_fotos\" id=\"$divnum\">\n";
echo ("<script language=\"javascript\">\n");
echo ("document.write('<IMG SRC=\"$thumnail?filename=$thum_temporal&time=$tiem po&width=$width&height=$height\" WIDTH=\"$width\" HEIGHT=\"$height\" VSPACE=\"8\" class=\"thum\" onmouseover=\"this.className=\'thum_sobre\'\" onmouseout=\"this.className=\'thum_out\'\" onClick=\"hideFrame(\'previewfull\')\" id=\"$idimage\" >');\n");
echo ("document.write('<br>');\n");
echo ("</script>\n");
echo '</div>';
*/


echo "<div class=\"alineamientos_fotos\" id=\"$divnum\">\n";
echo ("<script language=\"javascript\">\n");
echo ("document.write('<a href=\"$thum_temporal\" rel=\"lightbox\" title=\"\">');\n");
echo ("document.write('<IMG SRC=\"$thumnail?filename=$thum_temporal&time=$tiem po&width=$width&height=$height\" WIDTH=\"$width\" HEIGHT=\"$height\" VSPACE=\"8\" class=\"thum\" onmouseover=\"this.className=\'thum_sobre\'\" onmouseout=\"this.className=\'thum_out\'\" onClick=\"hideFrame(\'previewfull\')\" id=\"$idimage\" >');\n");
echo ("document.write('</a>');\n");
echo ("document.write('<br>');\n");
echo ("document.write('<a href=\"captura.php?ruta_imagen=$thum_temporal&orig inal=$origen&idimagen=$divnum\" target=\"send\">');\n");
echo ("document.write('<IMG SRC=\"Images/marcar.gif\" width=\"22\" height=\"22\" border=\"0\" onClick=\"activoimage(\'$divnum\'),hideFrame(\'pre view\')\" >');\n");
echo ("document.write('</a>');\n");
echo ("</script>\n");
echo '</div>';

}
else
{
if(eregi($ext,"1||2||3"))
{
$hay++;
$ru=$path.$file;
echo "<div class=\"alineamientos_fotos\" id=\"$divnum\">\n";
echo ("<script language=\"javascript\">\n");
echo ("document.write('<img src=\"$thumnail?filename=$ru&tiempo=$tiempo&width= $width&height=$height\" WIDTH=\"$width\" HEIGHT=\"$height\" VSPACE=\"8\" class=\"thum\" onmouseover=\"this.className=\'thum_sobre\'\" onmouseout=\"this.className=\'thum_out\'\" id=\"$idimage\" onClick=\"hideFrame(\'previewfull\')\" >');\n");
echo ("document.write('<br>');\n");
echo ("</script>\n");
echo '</div>';
}
}


}

}
//cerramos el directorio
closedir($dir);

if($hay==0)
{
echo '<div id="search">';
echo '<ul>';
echo '<img src="Images/dirsearch.gif" width="48" height="48"><br>';
echo '<span class="texmess">¡No se encontraron imagenes en este directorio!</span>';
echo '<br><img src="Images/vacio.gif" width="48" height="48">';
echo '</ul>';
echo '</div>';
}

//}//del for
}
else
{
echo "Error: no se pudo abrir el directorio de imagenes.";
}



?>
__________________
gerardo

Última edición por chalchis; 24/08/2006 a las 15:57
  #20 (permalink)  
Antiguo 24/08/2006, 15:43
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
archivo llamado prueba2 genera el thumnail

<?php

$width=$_GET['width'];
$height=$_GET['height'];
//$width = 80;
//$height = 80;
$filename=trim($_GET['filename']);//imagen a original
$rfisica=realpath($filename);
//verificamos el tipo de imagen
list($ani, $ali, $tipo, $atr)=getimagesize($filename);

//tipos de archivos que captura la variable $tipo
/*
valor-------tipo de imagen
1 = GIF
2 = JPG
3 = PNG
4 = SWF
5 = PSD
6 = BMP
7 = TIFF(intel byte order)
8 = TIFF(motorola byte order)
9 = JPC
10 = JP2
11 = JPX
12 = JB2
13 = SWC
14 = IFF
15 = WBMP
16 = XBM
*/
//creamos segun sea el tipo de imagen

switch($tipo)
{
case 1://gif
$src_image=imagecreatefromgif($filename);//devuelve un id de la imagen
break;
case 2://jpg
$src_image=imagecreatefromjpeg($filename);//devuelve un id de la imagen
break;
case 3://png
$src_image=imagecreatefrompng($filename);//devuelve un id de la imagen
break;

}

//$crear_imagen=imagecreatefromjpeg(';//devuelve un id de la imagen

//imagen desde el archivo
//$src_image=imagecreatefromjpeg($filename);//devuelve un id de la imagen


//$image = imagecreate($width, $height);
$image=ImageCreateTrueColor($width, $height);//creamos la imagen con color real

//asignamos los colores
$bg = imagecolorallocate($image, 216, 216, 235);//para color de fondo
imagefill($image,0,0,$bg); //rellenamos con el color de fondo

//$bg = imagecolorallocate($image, 216, 216, 216);//para color de fondo
//imagefill($image,0,0,$bg);
//imagecolortransparent($image,$bg);

$verde = imagecolorallocate($image, 96, 7, 143);//para el color de la letra

$margin_x = 10;//margen x
$margin_y = 10;//margen y

$w=$width-2*$margin_x;//100
$h=$height-2*$margin_y;//100

$src_w=imagesx($src_image);//aqui obtenemos la anchura de la imagen original apartir del id generado
$src_h=imagesy($src_image);//aqui obtenemos la altura de la imagen original apartir del id generado
if(($w > $src_w) && ($h > $src_h))
{
$dst_w = $src_w;
$dst_h = $src_h;
}
else
{
//¿o escalamos la imagen de acuerdo a la dimensión horizontal?
if(($w/$h) < ($src_w/$src_h))
{
$dst_w=$w;
$dst_h=$w*$src_h/$src_w;
}
else//¿o la escalamos de acuerdo a la dimensión vertical?
{
$dst_w=$h*$src_w/$src_h;
$dst_h=$h;
}
}
//imagecopyresized($image, $src_image, ($width-$dst_w)/2, ($height-$dst_h)/2,0, 0, $dst_w, $dst_h, $src_w, $src_h);
imagecopyresampled($image, $src_image, ($width-$dst_w)/2, ($height-$dst_h)/2,0, 0, $dst_w, $dst_h, $src_w, $src_h);
//colocamos el texto sobre la imagen
imagestring($image, 0, $margin_x, ($height-$margin_y), $tipo, $verde);

//encabezado correspondiente para los datos de salida
switch($tipo)
{
case 1://gif
header("Content-type: image/gif");
imagegif($image);
break;
case 2://jpg
header("Content-type: image/jpeg");
imagejpeg($image);
break;
case 3://png
header("Content-type: image/png");
imagepng($image);
break;
}
//header("Content-type: image/jpeg");


//generamos la imagen
//imagejpeg($image);

//liberamos la memoria
imagedestroy($image);
?>
__________________
gerardo
  #21 (permalink)  
Antiguo 24/08/2006, 15:45
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
por ultimo archivo llamado convert imagemagick

convert.php
<?php
function transformar($dato1,$dato2)
{//\ImageMagick-6.2.7-Q16
//-resample 96 -resize 120
$rutaconver="C:\ImageMagick-6.2.9-Q16\convert.exe ";
$ejecuta=exec("$rutaconver $dato1 $dato2");
}
?>
__________________
gerardo

Última edición por chalchis; 24/08/2006 a las 15:57
  #22 (permalink)  
Antiguo 24/08/2006, 15:51
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
la observacion que encontre

como pueden apreciar creo una pagina con frames en esas paginas
al menos en captura.php y base.php

solo pongo esto
session_start();
echo "sesion: ".$_SESSION["suser"]."<br>";

entonces el datelle que vi es que cuando es requerido el exec() para llamar el convert de imagemagick es cuando la pagina se medio bloquea y no visualiza nada y lo que hice es quitar los session_start(); de las otras paginas que acabo de mencionar

captura.php y base.php
solo dejo en recorrido.php
session_start();
echo "sesion: ".$_SESSION["suser"];

y asi si funciona

que podra ser y lo curioso es que si no se requiere el exec es decir si no encuentra ningun tif o bmp sin quitar los session_start();
echo "sesion: ".$_SESSION["suser"] de los otros frames corre bien la aplicacion

saludos
Amigo cluster gracias por responder
__________________
gerardo
  #23 (permalink)  
Antiguo 24/08/2006, 15:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Da igual si usas frames o no .. cara a "PHP" lo que importa es el script que hace tu proceso con "exec()" y supongo que contiene también tu código de sesiones (session_start()). Pero . me parece altament extraño ese comportamiento de PHP .. ¿que quiere decir esto entonces? .. que no puedo usar sesiones si hago uso de funciones de sistema como exec()? ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #24 (permalink)  
Antiguo 24/08/2006, 16:04
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
lo curioso es que solo me permite tener un solo
ej:
session_start();
echo "sesion: ".$_SESSION["suser"];

cuando es requerido el exec

pero como he estado comentado los procesos si los hace el detalle es como si los buferes de salida de bloquearan o algo por el estilo y aparte no visualiza nada pero si le doy click ver codigo fuente , los scripts o resultado estan imprimiendose pero a medias...y la barra de progreso del navegador ya sea ie o firefox se quedan pensando..
__________________
gerardo
  #25 (permalink)  
Antiguo 24/08/2006, 16:18
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
solo para tener encuenta tengo
apache 2.0.58
php5.1.4
__________________
gerardo
  #26 (permalink)  
Antiguo 25/08/2006, 00:23
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Sonrisa hola cluster parace que la solucion es

hola amigo Cluster y amigos creo que he encontrado la solucion y lo encontre aqui

http://bugs.php.net/bug.php?id=22526

probablmente no tenga mucho que ver pero mencionan el comando exec y sobre session_start()

http://bugs.php.net/bug.php?id=22526

dicen algo como esto

2 Feb 2004 10:59am UTC] php_bug at cklowe dot com

Workaround: use session_write_close() before the exec.

You can use session_start() after the call if you still need to write
session values. Reading doesn't require an open session.

I've tested this somewhat, so please post how you get on.

probe poniendo el
session_write_close()
cambie esto en el archivo recorrido.php

quite esto
transformar($origen,$thum_temporal);
y puse
$rutaconver="c:\ImageMagick-6.2.7-Q16\convert.exe $origen $thum_temporal";
session_write_close();
$re=exec($rutaconver);

y tambien puse los
session_start();
$usuario=$_SESSION["susuario"];
echo $usuario;

en mis frames
y el resultado fue exitoso ya no se me pasma la aplicacion y imprime todo completamente visualmente

saludos
seguire haciendo mas pruebas

y gracias amigo cluster por tus comentarios
__________________
gerardo
  #27 (permalink)  
Antiguo 25/08/2006, 00:41
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
solo como comentario esa respuesta lo encontre en google
escribiendo:

session_start + exec + php

saludos
__________________
gerardo
  #28 (permalink)  
Antiguo 25/08/2006, 06:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Gracias por la solución y tus pruebas. (yo tomo nota y aprendo como siempre).

Este tema está listo para realizar una FAQ. Te invito a publicar una FAQ para el foro con tus comentarios y experiencias sobre uso de sesiones y exec().

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #29 (permalink)  
Antiguo 25/08/2006, 09:33
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
ok cluster es buena idea ya que veo que casi no hay documentacion sobre ese detalle

saludos
__________________
gerardo
  #30 (permalink)  
Antiguo 25/08/2006, 09:35
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
ok cluster es buena idea ya que veo que casi no hay documentacion sobre ese detalle

saludos
__________________
gerardo
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 07:12.