Redimensionar múltiples imágenes de un directorio en PHP
2 Comments
La necesidad surge de un cliente al que la web le iba lenta. Era porque disponía de archivo muy pesados y la carga estaba complicando la navegabilidad de la web.
Con este pequeño script en php se recorre los archivos del directorio, detecta si son de tamaño grande y si es así se redimensiona, en este caso a 600 x 400px.
<? # establecer limite de tiempo máx ejecutandose set_time_limit(200); ## CONFIGURACION ############################# $ancho_nuevo=600; $alto_nuevo=400; # directorio $path="/directorio/articulos"; $path2="/directorio2/articulos2"; ## FIN CONFIGURACION ############################# $directorio=dir($path); $items = 0; echo "Directorio ".$path.":<br><br>"; while ($archivo = $directorio->read()) { if($archivo != "." && $archivo != "..") { $ruta1 = $path.'/'.$archivo; $ruta2 = $path2.'/'.$archivo; $ancho = $ancho_nuevo; $alto =$alto_nuevo; $datos=getimagesize ($ruta1); $ancho_orig = $datos[0]; # Anchura de la imagen original $alto_orig = $datos[1]; # Altura de la imagen original $tipo = $datos[2]; //echo "<br>Ancho nuevo: " . $ancho; //echo "<br>Ancho orig: " . $ancho_orig; //echo "<br>Alto nuevo: " . $alto; //echo "<br>Alto orig: " . $alto_orig; if($ancho < $ancho_orig || $alto < $alto_orig) { echo "<br>Archivo: " .$ruta1; echo "<br>Archivo destina: " .$ruta2; if ($tipo==1){ # GIF if (function_exists("imagecreatefromgif")) $img = imagecreatefromgif($ruta1); else echo "No function GIF"; } else if ($tipo==2){ # JPG if (function_exists("imagecreatefromjpeg")) $img = imagecreatefromjpeg($ruta1); else echo "No function JPG"; } else if ($tipo==3){ # PNG if (function_exists("imagecreatefrompng")) $img = imagecreatefrompng($ruta1); else echo "No function PNG"; } # Se calculan las nuevas dimensiones de la imagen if ($ancho_orig>$alto_orig) { $ancho_dest=$ancho; $alto_dest=($ancho_dest/$ancho_orig)*$alto_orig; } else { $alto_dest=$alto; $ancho_dest=($alto_dest/$alto_orig)*$ancho_orig; } // imagecreatetruecolor, solo estan en G.D. 2.0.1 con PHP 4.0.6+ $img2=@imagecreatetruecolor($ancho_dest,$alto_dest) or $img2=imagecreate($ancho_dest,$alto_dest); // Redimensionar // imagecopyresampled, solo estan en G.D. 2.0.1 con PHP 4.0.6+ @imagecopyresampled($img2,$img,0,0,0,0,$ancho_dest,$alto_dest,$ancho_orig,$alto_orig) or imagecopyresized($img2,$img,0,0,0,0,$ancho_dest,$alto_dest,$ancho_orig,$alto_orig); // Crear fichero nuevo, según extensión. if ($tipo==1) // GIF if (function_exists("imagegif")) imagegif($img2, $ruta2); else echo "No GIF"; if ($tipo==2) // JPG if (function_exists("imagejpeg")) imagejpeg($img2, $ruta2); else echo "No JPG"; if ($tipo==3) // PNG if (function_exists("imagepng")) imagepng($img2, $ruta2); else echo "No PNG¡"; } unlink($ruta1); $items ++; } } echo "<br>Total items: ". $items; $directorio->close(); ?> |