En esta ocasión, vamos a aprender a hacer imágenes en miniatura o “thumbnails” por medio de PHP, algo muy típico a la hora de crear galerías de fotos o gestionar fotografías para perfiles, avatares, etc. Para lograrlo, haremos uso de las funciones GD que permiten manipular imágenes en una variedad de diferentes formatos de imagen, incluyendo GIF, PNG, JPEG, WBMP y XPM.
En afán de llegar a nuestro objetivo, vamos a retomar también algunos conceptos que vimos en el artículo: Como hacer upload de archivos con PHP ¡Manos a la obra!
Creando la función para las miniaturas
Necesitamos crear una función, la llamaremos miniatura y tendrá como parámetros 4 valores: El archivo de la imagen, el nombre del archivo en local, ancho y alto.
function miniatura($archivo, $local, $ancho, $alto){
}
Trabajemos dentro de la función. Primero necesitamos separar el nombre y la extensión del archivo en un array de 2 elementos.
$arrNombre = explode(".", $local);
$nombre = $arrNombre[0];
$extension = $arrNombre[1];
Lo siguiente revisar el tipo de archivo que hemos recibido y crear una nueva imagen a partir de él. Haremos está comprobación para 3 formatos: JPG, PNG y GIF.
if($extension=="jpg" || $extension=="jpeg") $nuevo = imagecreatefromjpeg($archivo);
if($extension=="png") $nuevo = imagecreatefrompng($archivo);
if($extension=="gif") $nuevo = imagecreatefromgif($archivo);
Ahora, creamos el thumbnail vacío con las dimensiones que le dimos como parámetro a la función.
$thumb = imagecreatetruecolor($ancho, $alto);
Y capturamos las dimensiones de la copia del archivo original
$ancho_original = imagesx($nuevo);
$alto_original = imagesy($nuevo);
Rellenamos nuestro thumbnail vacío con la función imagecopyresampled pasándole varios parámetros como el thumbnail, la copia del archivo original, las dimensiones, entre otros valores.
imagecopyresampled($thumb,$nuevo,0,0,0,0,$ancho,$alto,$ancho_original,$alto_original);
Definimos el nombre que va a llevar nuestro thumbnail, reutilizando el nombre y la extensión de antes.
$thumb_name = "thumb_$nombre.$extension";
Finalmente, exportamos el thumbnail al formato elegido.
// 90 es la calidad de compresión, Máx 100
if($extension=="jpg" || $extension=="jpeg") imagejpeg($thumb, $thumb_name,90);
if($extension=="png") imagepng($thumb, $thumb_name);
if($extension=="gif") imagegif($thumb, $thumb_name);
Ya que terminamos, vamos a generar 2 miniaturas de un archivo muestra, para poner a prueba nuestro código.
miniatura("muestra.jpg", "muestra100.jpg", 100, 100);
miniatura("muestra.jpg", "muestra256.jpg", 256, 256);
Una vez creadas, las mostramos con algo de HTML básico.
<p><img src="thumb_muestra100.jpg" alt="Miniatura" /></p>
<p><img src="thumb_muestra256.jpg" alt="Miniatura" /></p>
¡Veamos el código en acción!
¿Te ha resultado? Déjanos saber en los comentarios aquí abajo, en nuestra cuenta de twitter @cablenaranja7 o en nuestra página de facebook.

Docente, IT Manager, Blogger & Developer. Escribo por diversión, educo por pasión. | Grandstanding is not my thing.
Hola
estoy tratando e usar tu código pero me falla el imagecreatefromjpeg($archivo)
el parametro $archivo debe ser la ruta completa del fichero verdad?
Así es. Saludos