Esto funciona y realiza la misma función que buscas:
Código PHP:
// Configura esto a tu medida
$path = "definicion-path";
$fichero = $path . "nombre_imagen.jpg";
$thumb = $path . "nombre_thumb.jpg";
unlink($fichero);// or die("No se ha podido borrar la imagen!");
$img = imagecreatefromjpeg($_FILES['imagen']['tmp_name']) or die("No se encuentra la imagen");
imagejpeg($img,$fichero);
// Creamos el thumb
$img = imagecreatefromjpeg($fichero) or die("No se encuentra la imagen $fichero");
list($ancho_orig, $alto_orig, $tipo, $atr) = getimagesize($fichero) or die("Problemas con $fichero<br>n");
thumbjpeg($fichero,40,40,$thumb); // (40,40) modifícalo por el tamaño de thumb que desees
Código PHP:
function thumbjpeg($imagen,$altura,$anchura,$path) {
$img = imagecreatefromjpeg($imagen);
// miramos el tamaño de la imagen original...
list($ancho_orig, $alto_orig, $tipo, $atr) = getimagesize($imagen);
// intentamos escalar la imagen original a la medida que nos interesa
if ($ancho_orig < $alto_orig) {
$ratio = ($alto_orig / $altura);
$anchura = round($ancho_orig / $ratio);
}
else {
$ratio = ($ancho_orig / $anchura);
$altura = round($alto_orig / $ratio);
}
// esta será la nueva imagen reescalada
$thumb = imagecreatetruecolor($anchura,$altura);
// con esta función la reescalamos
imagecopyresampled($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $ancho_orig, $alto_orig);
// voilà la salvamos con el nombre y en el lugar que nos interesa.
imagejpeg($thumb,$path);
}