Генерация изображения с заданным текстом

Готовлю сайт с онлайн тестированием (заказчик называет это громким словом олимпиады).
Стоит задача выдавать каждому участнику сертификат об участии.
Возник вопрос как используя общее для всех фоновое изображение сгенерировать на каждом сертификате Имя и Фамилию участника? Причем это должна быть картинка пригодная для скачивания и печати.


Само собой не стоит вопрос как вытащить и передать скрипту нужные текстовые данные.
Меня интересует именно генерация изображения с динамичным текстом.
Кто сталкивался с подобным вопросом? Может посоветуете какие то конкретные готовые решения.
На крайний случай думаю можно сгенерировать PDF документ.
Николай Савин
03 декабря 2015, 07:25
modx.pro
5
2 798
+2
Поблагодарить автора Отправить деньги

Комментарии: 5

Володя
03 декабря 2015, 13:08
0
напишите сниппет, который будет накладывать текст на картинку и сохранять ее где вам надо.
можно использовать imagettftext
    Николай Савин
    03 декабря 2015, 13:54
    0
    Я и рад бы, не получается почему то.
    Может Ваш взгляд подскажет в чем ошибка
    header('Content-Type: image/jpeg');
    
    $im = imagecreatefromjpeg('/assets/testCert.jpg');
    
    // get the image size
    $w = imagesx($im);
    $h = imagesy($im);
    
    // place some text (top, left)
    imagettftext($im, 60, 0, 300, 100, 0xFFFFFF, '/assets/arial.ttf', 'Текст');
    
    imageJpeg($im, "/assets/testCert.jpg", 85);
    imagedestroy($im);
      Володя
      03 декабря 2015, 14:03
      0
      указывайте полный путь до изображения и до файла шрифта
      $im = imagecreatefromjpeg(MODX_BASE_PATH.'assets/testCert.jpg');
      и тд
        Володя
        03 декабря 2015, 16:07
        2
        +1
        да все нормально работает.
        Ток что попробовал.

        t1.vgrish.ru/img/img.php?text=%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82!,%20%D1%8F%20%D0%BD%D0%B0%D0%B4%D0%BF%D0%B8%D1%81%D1%8C%20%D0%BD%D0%B0%20%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B5%20%20))))
        <?php
        define('MODX_API_MODE', true);
        require_once dirname(dirname(__FILE__)) . '/core/config/config.inc.php';
        require_once MODX_BASE_PATH . 'index.php';
        if (empty($_GET['text'])) {
        	die('введите текст');
        }
        $opts = [
        	'background' => MODX_ASSETS_PATH . 'img/background.jpg',
        	'font' => MODX_BASE_PATH . 'img/arial.ttf',
        	'save' => MODX_ASSETS_PATH . 'img/g/',
        	'size' => 30,
        	'top' => 200,
        	'left' => 200,
        	'text' => $_GET['text']
        ];
        $path = $opts['save'] . sha1($opts['text']) . '.jpg';
        if (!file_exists($path)) {
        	$img = imagecreatefromjpeg($opts['background']);
        	$color = imagecolorallocate($img, 250, 0, 0);
        	/* выводим текст на изображение */
        	imagettftext(
        		$img,
        		$opts['size'],
        		0,
        		$opts['left'],
        		$opts['top'],
        		$color,
        		$opts['font'],
        		$opts['text']
        	);
        	imagejpeg($img, $path, 100);
        	imagedestroy($img);
        }
        echo '<img src="' . str_replace(MODX_BASE_PATH, MODX_BASE_URL, $path) . '">';
        gist.github.com/vgrish/5212d75feea58e96b08b
      Андрей
      13 ноября 2018, 20:49
      0
      Добрый день. Можно ли использовать ваше решение для того, чтобы генерировать картинку с текстом для новости — например с ее заголовком, если фото для новости не загружено?
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        5