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

84
26 марта 2022, 21:30

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

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

Answer 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');

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

READ ALSO
Валидация через Callback в Symfony

Валидация через Callback в Symfony

каким образом можно в анотациях корректно указать кастомную функцию валидациивариант из доки не проходит

115
Как парсить JSON и вывести результат на PHP?

Как парсить JSON и вывести результат на PHP?

При выполнении следующего кода:

125
Получить массив из таблицы БД через PDO

Получить массив из таблицы БД через PDO

Мне нужно получить из БД sqlite массив всех строк таблицы tableЧерез PDO

170
Постоянно отключается, база данных vestaCP

Постоянно отключается, база данных vestaCP

поставил на сервер digitalOcean панель управления сервером VstaCp, после чего под ее пользователем установил wordpress, проблема в том, что база данных...

116