Нужно изменить размер изображения на сервере php

Есть задача - менять размер изображения, чтобы оно было пропорциаонльно (квадратное). Только дело в том, что его нужно не кропить, а приращивать белые полосы по сторонам (скидываю пример). введите сюда описание изображения

Есть готовые решения, или варианты как это просто написать?


Ответы (1 шт):

Автор решения: девочка с глазами ребёнка

Пример с использованием библиотеки GD:

$image = imagecreatefrompng(__DIR__ . '/input.png');

$width = imagesx($image);
$height = imagesy($image);

$limit = max([$width, $height]);

$leading = imagecreatetruecolor($limit, $limit);
$background = imagecolorallocate($leading, 255, 255, 255);
imagefill($leading, 0, 0, $background);

if ($height >= $width) {

    $new_w = intval($limit * $width / $height);
    imagecopyresampled(
        $leading, $image, intval(($limit - $new_w) / 2),
        0, 0, 0, $new_w, $height, $width, $height
    );

} else {

    $new_h = intval($limit * $height / $width);
    imagecopyresampled(
        $leading, $image, 0, intval(($limit - $new_h) / 2), 0, 0,
        $limit, $new_h, $width, $height
    );

}

imagepng($leading, 'output.png');

Соответственно это лучше обернуть в какюу-либо функцию, чтобы при самой загрузке изображения видоизменять ее в нужный формат.

→ Ссылка