Вы можете сделать свое изображение с исходным соотношением сторон, но подгоните его под размер квадрата, не обрезая его.Как я вижу, вы используете Intervention Image, так что вы можете попробовать:
$img = Image::make($path)->resize($width, $height, function ($constraint) {
$constraint->aspectRatio();
});
С этим вы скажете Intervention создать изображение и выберете подгонку по квадрату по ширине, если ширина вашего изображения больше высоты или повысота, если высота вашего изображения больше ширины.
Если вам также нужен квадрат вокруг, вы можете использовать:
$square = Image::canvas($width, $height, '#101010')->insert($img, 'center');