PHP:¿Cómo creo thumbnails de mis imágenes?

De Foros del Web

Con las funciones de imagen de la librería GD en esta simple función.

Código PHP:

function thumbnail($file,$dir,$ancho=100,$alto=100,$gif_support=false) 
{ 
    if(!file_exists($file)){ 
        return false; 
    } 
    if(!is_dir($dir)){ 
        return false; 
    } 
    $final = (int) strlen($file) - 4; 
    $nombre = strtolower(substr($file,0,$final)); 
    $ext = strtolower(substr($file,-4,4)); 
    $nombre = $nombre.$ext; 
    $mini = $dir."/mini_".$nombre; 
    if($ext==".jpg" || $ext==".jpeg"){ 
        $origen  = imageCreateFromJPEG($file); 
        $imgAncho= imageSx($origen); 
        $imgAlto = imageSy($origen); 
        $imagen  = imageCreate($ancho,$alto); 
        ImageCopyResized($imagen,$origen,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto); 
        imageJPEG($imagen,$mini); 
    }else if($ext==".png"){ 
        $origen  = imageCreateFromPNG($file); 
        $imgAncho= imageSx($origen); 
        $imgAlto = imageSy($origen); 
        $imagen  = imageCreate($ancho,$alto); 
        ImageCopyResized($imagen,$origen,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto); 
        imagePNG($imagen,$mini); 
    }else if(($gif_support==true) && ($ext==".gif")){ 
         $origen  = imageCreateFromGIF($file); 
        $imgAncho= imageSx($origen); 
        $imgAlto = imageSy($origen); 
        $imagen  = imageCreate($ancho,$alto); 
        ImageCopyResized($imagen,$origen,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto); 
        imageGIF($imagen,$mini); 
    }else{ 
        return false; 
    } 
    return true; 
}  

¿Cómo usarla?

Sencillo, le pasas a la función el nombre del archivo y el directorio en que quieres que queden creadas las thumbnails. En forma de opción esta que le pases el alto y ancho que por defecto es 100 de ancho y de alto.

También si tu librería GD soporta gifs le pasas true a la opción de gif.

Código PHP:

thumbnail( $file , $dir , [$ancho = 100] , [$alto = 100] , [$gif_support=false] );  

Ejemplo de uso

Código PHP:

if(!thumbnail("imagen.png","./thumbnails",80,80)){ 
    echo "error en creación de thumbnails"; 
}else{ 
    echo "Creación exitosa"; 
}  

Recordar que esta función crea los thumbnails en un directorio especificado.


--MSDark 23 Jul 2003

Este artículo es parte de las FAQs de PHP y el Manual de PHP.

Herramientas personales