как обрезать изображение и задать ему размер относительно рамки?

Есть код который генерирует картинку из 2-х изображений. Одна полупрозрачная накладывается на непрозрачную (задний фон)

проблема в том, что если bp.png меньше, чем im2.png - то картинка не генерится, поэтому появилась мысль - задать размеры изображению bp.png и обрезать что не помещается. Однако, когда я пытаюсь добавить imagecrop - код перестает работать, а если добавляю imagecreatetruecolor, то картинка вовсе становится черной..... помогите пожалуйста, если не сложно :-)

res/bg.png - (задний фон) картинка, которую нужно обрезать по размерам равному у res/im2.png

res/im2.png - сама полупрозрачная картинка, которая накладывается на bp.png

<?


$img            = imagecreatefrompng("res/bg.png");
$img_cover2         = imagecreatefrompng("res/im2.png");
$img_logo       = imagecreatefrompng("res/logo.png");
$font_path      = "res/ptsans.ttf";
$font_path_bold = "res/ptsans-bold.ttf";
$save_file      = "output/".uniqid().'.png';
$quality        = 80;
$temp           = "";
$img_cover = imagecreatetruecolor(1240, 750);       
$date           = "25.07.2018, 15:00";
$title          = "текст ";

/*-----------------------------------------------------------------
| Накладываем полупрозрачный фон
------------------------------------------------------------------*/
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));


/*-----------------------------------------------------------------
| Накладываем лого
------------------------------------------------------------------*/
imagealphablending($img, true);
imagesavealpha($img, true);
imagealphablending($img_logo, true);
imagesavealpha($img_logo, true);
imagecopy($img, $img_logo, 44, 44, 0, 0, imagesx($img_logo), imagesy($img_logo));
    
    
header('Content-Type: image/png');


/*-----------------------------------------------------------------
| Накладываем текст и дату
------------------------------------------------------------------*/
$line = array(32, 64, 96);

if (mb_strlen($title) > $line[0]) {
    
    $pos = mb_strlen(explode(' ', mb_substr($title, $line[0], 999), 2));
    $line[0] = $pos+$line[0];
    
}

if (mb_strlen($title) > $line[1]) {
    
    $pos = mb_strlen(explode(' ', mb_substr($title, $line[1], 999), 2));
    $line[1] = $pos+$line[1];
    
}
if (mb_strlen($title) > $line[0]) {
    $title = mb_substr($title, 0, $line[0])."\n".mb_substr($title, $line[0]+1, $line[1]-$line[0])."\n".mb_substr($title, $line[1]+1, $line[0]);
}


# Add date
$color = imagecolorallocate($img, 155, 192, 239);
$text = $date;
imagettftext($img, 12, 0, 44, 152, $color, $font_path, $text);

# Add City
$color = imagecolorallocate($img, 155, 192, 239);
$text = mb_strtoupper($city);
imagettftext($img, 12, 0, 260, 151, $color, $font_path_bold, $text);

# Add Title
$color = imagecolorallocate($img, 0xFF, 0xFF, 0xFF);
$text = $title;
imagettftext($img, 24, 0, 44, 214, $color, $font_path_bold, $text);


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

    $im = imagecreate(1240, 750);   

?>


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