En este tutorial de PHP vamos a explicar como hacer Thumbnails, o lo que es lo mismo, imágenes en miniatura en PHP con la librería GD.
Este script nos será muy útil a la hora de crear galerías de imágenes, ya que automáticamente redimensionara todas las fotos de un directorio se copiaran a otro ya con el tamaño que nosotros queramos, por lo que se optimizara en gran parte a carga de esta.
Aquí os dejare el código del script:
<?php
$ancho_nuevo = 80;
$carpeta = "images/";
$ext = array("gif","jpg","png");
$carpetanueva = "miniimages/";
if(is_dir($carpeta) && $dir = opendir($carpeta)){
while (($nombre_archivo = readdir($dir)) !== false){
$archivo = pathinfo($carpeta.$nombre_archivo);
if (in_array(strtolower($archivo['extension']),$ext))
{
if(strtolower($archivo['extension'])=="gif"){
$img = imagecreatefromgif($carpeta.$nombre_archivo);
}else if(strtolower($archivo['extension'])=="jpg"){
$img = imagecreatefromjpeg($carpeta.$nombre_archivo);
}else if(strtolower($archivo['extension'])=="png"){
$img = imagecreatefrompng($carpeta.$nombre_archivo);
}
$ancho = imagesx($img);
$altura = imagesy($img);
$ancho_nuevo = $ancho_nuevo;
$altura_nueva = floor($altura*($ancho_nuevo/$ancho));
$tmp_img = imagecreatetruecolor($ancho_nuevo,$altura_nueva);
imagecopyresized($tmp_img,$img,0,0,0,0,$ancho_nuevo,$altura_nueva,$ancho,$altura);
if(strtolower($archivo['extension'])=="gif"){
imagegif( $tmp_img,$carpetanueva.$nombre_archivo);
}else if(strtolower($archivo['extension'])=="jpg"){
imagejpeg( $tmp_img,$carpetanueva.$nombre_archivo);
}else if(strtolower($archivo['extension'])=="png"){
imagepng( $tmp_img,$carpetanueva.$nombre_archivo);
}
}
}
}
closedir($dir);
?>
Ahora vamos a intentar explicar el código PHP brevemente:
En las primeras cuatro líneas, tan solo especificamos el nuevo tamaño que van a tener las imágenes y los directorios de origen y de destino.
En la siguiente línea comprobaremos que tanto el directorio que contiene las imágenes como el que va a guardar las imagenes redimensionadas existen.
Una vez comprobado, si existen comprobaremos con un bucle que los archivos sean imágenes cogiendo tan solo los archivos con extensión .jpg, .gif y .png
while (($nombre_archivo = readdir($dir)) !== false){
$archivo = pathinfo($carpeta.$nombre_archivo);
if (in_array(strtolower($archivo['extension']),$ext))
{
if(strtolower($archivo['extension'])=="gif"){
$img = imagecreatefromgif($carpeta.$nombre_archivo);
}else if(strtolower($archivo['extension'])=="jpg"){
$img = imagecreatefromjpeg($carpeta.$nombre_archivo);
}else if(strtolower($archivo['extension'])=="png"){
$img = imagecreatefrompng($carpeta.$nombre_archivo);
y por ultimo, en las siguientes líneas tan solo estamos creando una copia de las imágenes originales con los nuevos tamaños en el directorio que antes hemos definido.
|