Aquí va:
Código PHP:
// Archivos
$nombre_foto='foto_prueba.jpg';
$nombre_thumbnail='thumb_prueba.jpg';
// Dimensiones del thumbnail
$ancho_thumbnail=120;
$alto_thumbnail=100;
// Cargamos la fotografía y guardamos sus dimensiones y ratio
$foto_entera=imagecreatefromjpeg($ruta.$nombre_foto);
$ancho_foto=imagesx($foto_entera);
$alto_foto=imagesy($foto_entera);
$ratio_foto=$ancho_foto/$alto_foto;
// Creamos una imagen con fondo blanco para el thumbnail
$thumbnail=imagecreatetruecolor($ancho_thumbnail,$alto_thumbnail);
$fondo=imagecolorallocate($thumbnail, 255, 255, 255);
imagefill($thumbnail, 0, 0, $fondo);
// Creamos el thumbnail y lo grabamos
imagecopyresampled($thumbnail,$foto_entera,0,0,0,0,$ancho_thumbnail,($ancho_thumbnail/$ratio_foto),$ancho_foto,$alto_foto);
imagejpeg($thumbnail,$ruta.$nombre_thumbnail,100);
Lo que hace es cargar una fotografía de las dimensiones que sean, y crea con ella un thumbnail de 120x100. Si la fotografía no tiene esta misma proporción, una de las dos dimensiones se recortará (si es más grande) o se quedará corta (si es más pequeña). En este último caso, el hueco que sobra se rellenará de blanco. Esto se ha hecho así porque las fotos que se van a meter en esta aplicación son de coches sobre fondo blanco, y así no se nota el hueco sobrante. Supongo que este código se puede optimizar para que, en caso de que sobre hueco, sobre tanto por arriba como por abajo y así la foto queda centrada.
Mario.