
В предыдущей статье я показывал, как можно написать текст на картинке. И недавно я столкнулся с проблемой, нужно было нанести текст с обводкой. То есть белый текст с черной окантовкой(обводкой). Стандартного решения в пхп нет, пришлось импровизировать, возможно это не самый рациональный способ, но он работает.
Вот исходник
<?php
$fontName = "impact.ttf"; // путь к шрифту
$fontSise = 48; // размер шрифта
$im = imageCreateFromJpeg("pic.jpg"); // картинка-фон
$padLeft = 10; // отступ слева
$padTop = $fontSise+30; // отступ справа
$text = "Текст кир\nиллица"; // текст, который будем наносить на картинку
$textColor = 0xFFFFFF; // цвет шрифта
$obvodkaColor = 0x000000; // цвет обводки
// обводка текста
imagettftext($im, $fontSise, 0, $padLeft+2, $padTop, $obvodkaColor, $fontName, $text);
imagettftext($im, $fontSise, 0, $padLeft-2, $padTop, $obvodkaColor, $fontName, $text);
imagettftext($im, $fontSise, 0, $padLeft, $padTop+2, $obvodkaColor, $fontName, $text);
imagettftext($im, $fontSise, 0, $padLeft, $padTop-2, $obvodkaColor, $fontName, $text);
imagettftext($im, $fontSise, 0, $padLeft+1, $padTop+1, $obvodkaColor, $fontName, $text);
imagettftext($im, $fontSise, 0, $padLeft+1, $padTop-1, $obvodkaColor, $fontName, $text);
imagettftext($im, $fontSise, 0, $padLeft-1, $padTop-1, $obvodkaColor, $fontName, $text);
imagettftext($im, $fontSise, 0, $padLeft-1, $padTop+1, $obvodkaColor, $fontName, $text);
// вывод текста
imagettftext($im, $fontSise, 0, $padLeft, $padTop, $textColor, $fontName, $text);
// выводим картинку в браузере
Header("Content-type: image/png");
imagePng($im);
// или сохраняем картинку
//$path = 'C:/testPNG.png';
//imagePng($im, $path);
// В конце освобождаем память, занятую картинкой.
imageDestroy($im);
?>
