Все таки нашел подходящий вариант, работает, осталось поэксперементировать и запилить в скрипт.
header('Content-type: image/png');
$text = "See you in Hell!";
// размер изображения
$img = imagecreatetruecolor(150, 150);
// цвет фона
$bg = imagecolorallocate($img, 18, 163, 235);
imagefilledrectangle($img, 0, 0, 150, 150, $bg);
// шрифт
$font = 'ttf.ttf';
// цвет текста
$black = imagecolorallocate($img, 255, 255, 255);
// вычисляем сколько места займёт текст
$bbox = imageftbbox(13, 0, $font, $text);
// вычисляем координаты для центрирования
$x = (imagesx($img) - $bbox[4])/2;
$y = (imagesy($img) - $bbox[5])/2;
// добавляем текст на изображение
imagefttext($img, 13, 0, $x, $y, $black, $font, $text);
// выводим изображение
imagepng($img);
// освобождаем память
imagedestroy($img);