Este codigo uso modificalo a tu gusto
Código PHP:
function _jmcrearthumbtestimonial($file){//File es el nombre de la imagen
$carpeta=nombre de la carpeta donde guardaras;
//Obtenemos el nombre de nuestra imagen
$name=$file;
$file='../album/'.$carpeta.'/'.$file;//La direccion donde buscara la imagen para hacer el thumb
//La dimension de nuestra imagen es de 120*120
$thumbD=120;
//Verificamos si existe la carpeta donde guardaremos nuestras imagenes dimensionadas si no existe la creamos
if(!file_exists('../album/'.$carpeta.'/thumb')){
mkdir('../album/'.$carpeta.'/thumb', 0777);
}
$savePath='../album/'.$carpeta.'/thumb/'; //DONDE GUARDARA EL THUMB
//Obtenemos la informacion de la imagen, el array info tendra los siguientes indices:
// 0: ancho de la imagen
// 1: alto de la imagen
// mime: el mime_type de la imagen
$info = getimagesize($file);
$image = imagecreatefromjpeg($file);
if($info[0] == $info[1]){
$xpos = 0;
$ypos = 0;
}
//Si la imagen no es cuadrada, hay que hacer un par de averiguaciones:
else{
if($info[0] > $info[1]){
//imagen horizontal
$xpos = ceil(($info[0] - $info[1]) /2);
$ypos = 0;
$width = $info[1];
$height = $info[1];
}else{
//imagen vertical
$ypos = ceil(($info[1] - $info[0]) /2);
$xpos = 0;
$width = $info[0];
$height = $info[0];
}
}
//Creamos una nueva imagen cuadrada con las dimensiones que queremos:
$image_new = imagecreatetruecolor($thumbD, $thumbD);
$bgcolor = imagecolorallocate($image_new, 255, 255, 255);
imagefilledrectangle($image_new, 0, 0, $thumbD, $thumbD, $bgcolor);
imagealphablending($image_new, true);
//Copiamos la imagen original con las nuevas dimensiones
imagecopyresampled($image_new, $image, 0, 0, $xpos, $ypos, $thumbD, $thumbD, $width, $height);
//Guardamos la nueva imagen como jpg con una calidad del 85%
$exito=imagejpeg($image_new, $savePath.$name, 90);
return $exito;
}
Saludos