PHP imagecopyresampled - Масштабировать и выравнивать любое загруженное изображение до середины фона - PullRequest
0 голосов
/ 11 июля 2020

Я застрял, и мне нужна помощь от вас, ребята.

Я хочу иметь возможность масштабировать и центрировать по центру (по горизонтали и вертикали) любое загруженное изображение на фоне.

У меня нет проблем с преобразованием загруженного изображения пользователем в фоновый режим. Я застреваю только тогда, когда пытаюсь выровнять его по середине фона.

enter image description here

enter image description here

This is what I am doing:

// GET IMAGES
$canvas         = 'canvas.png';
$uploaded_image = 'uploaded_image.png';


// GET BACKGROUND SIZE
$background = imagecreatefromstring(file_get_contents($canvas));
$background_width  = imagesx($background);
$background_height = imagesy($background);

$msg_background_size = "Background size: $background_width x $background_height";


// GET IMAGE SIZE
$image = imagecreatefromstring(file_get_contents($uploaded_image));
$image_width  = imagesx($image);
$image_height = imagesy($image);

$msg_image_size = "Image size: $image_width x $image_height";


// SCALE IMAGE TO FIT AT CENTER OF BACKGROUND
$new_image_width = $background_width / 1.25;
$scale = $image_width / $new_image_width;
$new_image_height = $image_height / $scale;

echo "New Image Width: $new_image_width";
echo "scale: $scale";
echo "New Image height: $new_image_height";


imagecopyresampled($background, $image, $background_width/10, $background_height/10, 0, 0, $new_image_width, $new_image_height, $image_width, $image_height);

// Save New Image 
imagepng($background,'./new_image.png');

Here is the end result:

It only works great if the uploaded image is square. If the uploaded image is not square (ex: 500px x 500px) it will not be aligned at the middle properly.

->> Squared Images --> Success введите описание изображения здесь

- >> Изображения прямоугольника - -> Не удалось введите описание изображения здесь

Я был бы очень благодарен, если бы кто-нибудь мог мне помочь. Я знаю, что это поможет многим другим.

...