Código PHP:
$quality = 300;
$width_original = 600;
$height_original = 520;
$name_original = $nombre;
$file = $ruta_provicional;
$savePath = "../img/img_/";
// Hacer thumbnails
$image = imagecreatefromjpeg($file);
$info = getimagesize($file);
if($info[0] == $info[1])
{
$xpos = 0;
$ypos = 0;
$width = $info[1];
$height = $info[1];
}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($width_original , $height_original);
$bgcolor=imagecolorallocate($image_new,255,255,255 );
imagefilledrectangle($image_new, 0, 0, $width_original , $height_original, $bgcolor);
imagealphablending($image_new, true);
//Copiamos la imagen original con las nuevas dimensiones
imagecopyresampled($image_new, $image, 0, 0, $xpos, $ypos, $width_original , $height_original, $width, $height);
imagejpeg($image_new, $savePath.$name_original , $quality);