Autor
|
Tema: Redimensionar varios archivos (Leído 2,832 veces)
|
luiggy2
Desconectado
Mensajes: 439
¡ Hello word ! XD
|
Buenas!. En estos últimos días estoy intentando redimensionar todas las fotos de una carpeta, para ello estoy usando el siguiente código. <?php //Recogemos variables; $ruta=$_GET["ruta"]; $anchura=$_GET["anchura"]; $hmax=$_GET["altura"]; //Guardamos el nombre de las fotos en un array $nombre = glob($ruta.'\\*.{jpg,gif,png}', GLOB_BRACE ); //Expresiones regulares $numero_fotos=count($nombre); //No fotos. //Bucle que abarque todas las fotos for($i=0;$i<$numero_fotos;$i++) { $datos = getimagesize($nombre[$i]); //Recogemos los datos de la foto [0][1][2] (ancho, alto, tipo) if($datos[2]==1) { }; if($datos[2]==2) { }; if($datos[2]==3) { }; /* aqui empieza lo bueno como bien sabemos no podemos redimensionar una imagen vertical de la misma forma que una horizontal bueno esta parte del script no ayuda a poder hacerlo lo que realiza es dividir el ancho original entre el ancho maximo y luego divide la altura original entre el resultado anterior bueno esto es para el ancho */ $ratio = ($datos[0] / $anchura); $altura = ($datos[1] / $ratio); /* Para el Alto sera esto primero pregunta si el alto es mayor que el alto maximo que hemos definido esto solo significa que es una imagen vertical claro si la condicion nos da true lo que haremos sera multiplicar la altura maxima por la anchura que hemos definido y la dividimos entre la altura esto nos dara una imagen vertical apropiada para nuestra muestra */ if($altura>$hmax) { $anchura2 = $hmax*$anchura/$altura; $altura = $hmax; $anchura = $anchura2; }; //Creamos la imagen en blanco // Sustituimos la imagen antigua por la nueva // Guardamos la imagen con otro nombre. if($datos[2]==1) { }; if($datos[2]==2) { }; if($datos[2]==3) { }; // Destruimos la imagen temporal para no recargar el servidor }; ?>
El problema es que después de solucionar varios errores, no consigo que funcione. Supongo que el error estará en algo tonto, pero ahora mismo no caigo. Espero sus respuestas. Pd.: La mayor parte del sódigo la saqué de esta web: http://www.codigolandia.com/art-Redimensionar+Imagenes+con+PHP-php-108.tc
|
|
« Última modificación: 29 Septiembre 2010, 20:05 pm por luiggy2 »
|
En línea
|
" Las grandes ideas suelen salir la mayoría de veces de grandes estupideces "
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
Tomando en cuenta las siguiente notas del uso de la función glob(); El problema puede estar en la expresión que creaste, nose puede saber con exactitud el tipo de valor que contiene la variable $ruta, para saber si ese es el problema... <?php //Guardamos el nombre de las fotos en un array $nombre = glob($ruta.'\\*.{jpg,gif,png}', GLOB_BRACE ); //Expresiones regulares $numero_fotos=count($nombre); //No fotos.
También pueda ser que no tengas permiso de escritura, en que SO lo estas probando?
|
|
|
En línea
|
Mi madre me dijo que estoy destinado a ser pobre toda la vida. Engineering is the art of balancing the benefits and drawbacks of any approach.
|
|
|
luiggy2
Desconectado
Mensajes: 439
¡ Hello word ! XD
|
Muchas gracias por responder. La variuable $ruta es un array que contiene el nombre de todos los archivos. El problema no es ese ya que si hago un: echo $nombre[$i];
me aparece el nombre del primer archivo 8solamente). Igual pasa con $datos. Sin embargo $ratio ya no lo muestra, por lo que el problema supongo que estrá al crear las imágenes: //... for($i=0;$i<$numero_fotos;$i++) { echo $nombre[$i]; //esto lo muestra echo $datos[0]."-".$datos[1]."-"$datos[2]; //Esto también lo muestra if($datos[2]==1) { }; if($datos[2]==2) { }; if($datos[2]==3) { }; $ratio = ($datos[0] / $anchura); echo $ratio; // Esto ya no lo muestra $altura = ($datos[1] / $ratio); // ...
Lo estoy probando bajo windows xp con PHP Version 6.0.0-dev. Thanks!
|
|
|
En línea
|
" Las grandes ideas suelen salir la mayoría de veces de grandes estupideces "
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
Mejor usa la clase NetpbmResize...
|
|
|
En línea
|
Mi madre me dijo que estoy destinado a ser pobre toda la vida. Engineering is the art of balancing the benefits and drawbacks of any approach.
|
|
|
luiggy2
Desconectado
Mensajes: 439
¡ Hello word ! XD
|
Muchas gracias, lo probaré cuando tenga tiempo para ver si funciona.
De todas formas todavía me sigue picando la curiosidad de porque no no funciona mi código.
Saludos!
|
|
|
En línea
|
" Las grandes ideas suelen salir la mayoría de veces de grandes estupideces "
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
Ps lo que te dije al principio, tu problema esta en en la expresión regular, yo eh probado el source y funciona correctamente modificando la regexp... Dame un ejemplo de que valores puede recibir la variable $ruta y verifico si las regexp que hiciste esta correcta... <?php //Recogemos variables; $anchura=$_GET["anchura"]; $hmax=$_GET["altura"]; //Guardamos el nombre de las fotos en un array $nombre = glob('*.{jpg,gif,png}', GLOB_BRACE ); //Expresiones regulares $numero_fotos=count($nombre); //No fotos. //Bucle que abarque todas las fotos for($i=0;$i<$numero_fotos;$i++) { $datos = getimagesize($nombre[$i]); //Recogemos los datos de la foto [0][1][2] (ancho, alto, tipo) if($datos[2]==1) { }; if($datos[2]==2) { }; if($datos[2]==3) { }; /* aqui empieza lo bueno como bien sabemos no podemos redimensionar una imagen vertical de la misma forma que una horizontal bueno esta parte del script no ayuda a poder hacerlo lo que realiza es dividir el ancho original entre el ancho maximo y luego divide la altura original entre el resultado anterior bueno esto es para el ancho */ $ratio = ($datos[0] / $anchura); $altura = ($datos[1] / $ratio); /* Para el Alto sera esto primero pregunta si el alto es mayor que el alto maximo que hemos definido esto solo significa que es una imagen vertical claro si la condicion nos da true lo que haremos sera multiplicar la altura maxima por la anchura que hemos definido y la dividimos entre la altura esto nos dara una imagen vertical apropiada para nuestra muestra */ if($altura>$hmax) { $anchura2 = $hmax*$anchura/$altura; $altura = $hmax; $anchura = $anchura2; }; //Creamos la imagen en blanco // Sustituimos la imagen antigua por la nueva // Guardamos la imagen con otro nombre. if($datos[2]==1) { }; if($datos[2]==2) { }; if($datos[2]==3) { }; // Destruimos la imagen temporal para no recargar el servidor }; ?>
|
|
|
En línea
|
Mi madre me dijo que estoy destinado a ser pobre toda la vida. Engineering is the art of balancing the benefits and drawbacks of any approach.
|
|
|
|
|