Tienes toda la razón, simplificare mi script para así entenderse mejor y así poderme ayudar, porque más vueltas que le doy me sale el fondo en negro y no consigo hacer un thumbnails con fondo blanco
Código PHP:
// Valores predefinidos
$quality = 90;
$width_original = 200;
$height_original = 200;
$name_original = 'caja_default01.JPG';
$file = "imagen/".$name_original;
$savePath = "imagen/comp/".$name_original;
// 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);