Как затемнить картинку и наложить текст с логотипом посредством php?

260
23 сентября 2018, 13:00

Вот такой код есть

  <?php
    // Тип содержимого
    header('Content-Type: image/png');
    // Создание изображения
    $im = imagecreatetruecolor(1200, 630);
    // Создание цветов
    $white = imagecolorallocate($im, 255, 255, 255);
    $grey = imagecolorallocate($im, 128, 128, 128);
    $black = imagecolorallocate($im, 0, 0, 0);
    imagefilledrectangle($im, 0, 0, 399, 29, $white);
    // Текст надписи
    $text = 'test';
    // Замена пути к шрифту на пользовательский
    $font = '/var/www/www-root/data/www/mycrimea.online/wp-content/themes/publisher-child/globerbold.ttf';
    // Тень
    imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);
    // Текст
    imagettftext($im, 20, 0, 10, 20, $black, $font, $text);
    imagepng($im);
    imagedestroy($im);
    ?>

но как не создать картинку а наложить уже на имеющуюся сначала фон полупрозрачный, а потом уже поверх текст с логотипом?

Answer 1

Для удобства, загрузили весь набор в Github. Ниже код и картинки до/после.

<?
    $img            = imagecreatefrompng("res/source.png");
    $img_cover      = imagecreatefrompng("res/transparent.png");
    $img_logo       = imagecreatefrompng("res/logo.png");
    $font_path      = "ptsans.ttf";
    $font_path_bold = "ptsans-bold.ttf";
    $save_file      = "output/".uniqid().'.png';
    $quality        = 80;
    $temp           = "";
    $date           = "25.07.2018, 15:00";
    $title          = "Lorem ipsum dolor sit amet, consectetur adipiscing elit";
    /*-----------------------------------------------------------------
    | Накладываем полупрозрачный фон
    ------------------------------------------------------------------*/
    imagealphablending($img, true);
    imagesavealpha($img, true);
    imagealphablending($img_cover, true);
    imagesavealpha($img_cover, true);    
    imagecopy($img, $img_cover, 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));

    /*-----------------------------------------------------------------
    | Накладываем текст и дату
    ------------------------------------------------------------------*/
    $line = array(32, 64, 96);
    if (mb_strlen($title) > $line[0]) {
        $pos = mb_strlen(explode(' ', mb_substr($title, $line[0], 999), 2)[0]);
        $line[0] = $pos+$line[0];
    }
    if (mb_strlen($title) > $line[1]) {
        $pos = mb_strlen(explode(' ', mb_substr($title, $line[1], 999), 2)[0]);
        $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
    imagepng($img, $save_file, 9);
    imagedestroy($img);             
?>

До:

После:

READ ALSO
Не срабатывает запрос ajax к php скрипту

Не срабатывает запрос ajax к php скрипту

Не могу понять в чем моя ошибкаСо страницы идет ajax-запрос на jQuery к php скрипту (версия php - 7

192
Как в PHP расшифровать пароль с базы

Как в PHP расшифровать пароль с базы

Как в PHP расшифровать пароль с базы? Сначала я создал хеш пароля и внес его в базу

182
WordPress WooCommerce hooks

WordPress WooCommerce hooks

Всем приветНи как не могу найти на просторах интернета hook, который заработает для search

177
Как передать переменную PHP в HTML документ

Как передать переменную PHP в HTML документ

Имеется HTML страница запущенная на IIS и PHP страница запущенная на Denwer

186