как обрезать изображение в php?

есть php код, который генерирует картинку.

Картинка получается из 1-й полупрозрачной картинки (бело-синяя картинка) , которая накладывается на фон(церковь).

Всё бы и ничего, НО есть проблема! картинка с церковью слишком большая, а все мои попытки добавить imagecrop и задать координаты ведут лишь к ошибкам.

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

вот сам код:

$img            = imagecreatefrompng("res/bg.png");
$img_cover2         = imagecreatefrompng("res/im2.png");

$quality        = 90;
$temp           = "";
$img_cover = imagecreatetruecolor(1240, 750);       






/*-----------------------------------------------------------------
| Накладываем полупрозрачный фон
------------------------------------------------------------------*/
imagealphablending($img, true);
imagesavealpha($img, true);
imagealphablending($img_cover2, true);
imagesavealpha($img_cover, true);    
imagecopy($img, $img_cover2, 0, 0, 0, 0, imagesx($img_cover), imagesy($img_cover));


    
header('Content-Type: image/png');



# Save Image
$im=imagepng($img);
imagedestroy($img);             

    $img = imagecreate(800, 600);   

помогите пожалуйста, уже пятые сутки мучаюсь...(((( плакать хочется


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

Автор решения: teran

в целом решение видится таким. Вы загружаете две картинки, фон и голубой оверлей

$bg = imagecreatefrompng(...);
$overlay =  ....;

далее сразу обрезаете фон по размеру оверлея.

$res = imagecrop($bg, [
             'x' => 0, 
             'y' => 0, 
             'width' => imagesx($overlay),
             'height' => imagesy($overlay)
          ]);

потом устаналиваете все ваши прозрачности и на полученное изображенеи накладываете фон

imagecopy($res, $overlay, 0,0, 0, 0, imagesx($ovelay), imagesy($overlay));
→ Ссылка