Нанесение на изображение текста с обводкой

Рецепт №99. Из книги «128 рецептов php»
Перейти к оглавлению

Для нанесения на изображение текста с обводкой специальных функций нет. Но из этого положения можно выйти, используя функцию — imagettftext. Все что нужно сделать, это вывести текст не один раз, как в стандартном случае, а девять. Да, девять раз, из них восемь раз вывод текста нужно делать цветом обводки, постоянно смещая текст 1-2 пикселя влево, вправо, вниз, вверх, влево и вверх, вправо и вверх, вправо и вниз, влево и вниз. И девятый раз необходимо выводить текст уже тем цветом, которого он должен быть.

Пример:

$width = 200; // ширина изображения
$height = 100; // высота изображения
// создаем изображение, на котором будем рисовать 
$img = imagecreatetruecolor($width, $height);
// цвет заливки фона
$rgb = 0xFFFFFF; 
// заливаем холст цветом $rgb
imagefill($img, 0, 0, $rgb); 

// путь к шрифту
$fontName = "impact.ttf"; 
// размер шрифта
$fontSise = 18; 
$x = 50; // отступ слева
$y = 50; // отступ справа
// текст, который будем наносить на картинку
// \n обозначает переход на новую строку
$text = "Текст кир\nиллица"; 

$textColor = 0xFFFFFF; // цвет шрифта
$aroundColor = 0x000000; // цвет обводки
// обводка текста
// смещение вправо
imagettftext(
$img, $fontSise, 0, $x+2, $y, 
$aroundColor, $fontName, $text
);
// смещение влево
imagettftext(
$img, $fontSise, 0, $x-2, $y, 
$aroundColor, $fontName, $text
);
// смещение вниз
imagettftext(
$img, $fontSise, 0, $x, $y+2, 
$aroundColor, $fontName, $text
);
// смещение вверх
imagettftext(
$img, $fontSise, 0, $x, $y-2, 
$aroundColor, $fontName, $text
);
// смещение вправо и вниз
imagettftext(
$img, $fontSise, 0, $x+1, $y+1, 
$aroundColor, $fontName, $text
);
// смещение вправо и вверх
imagettftext(
$img, $fontSise, 0, $x+1, $y-1, 
$aroundColor, $fontName, $text
);
// смещение влево и вверх
imagettftext(
$img, $fontSise, 0, $x-1, $y-1, 
$aroundColor, $fontName, $text
);
// смещение влево и вниз
imagettftext(
$img, $fontSise, 0, $x-1, $y+1, 
$aroundColor, $fontName, $text
);
// вывод самого текста
imagettftext(
$img, $fontSise, 0, $x, $y, 
$textColor, $fontName, $text
);
	
// заголовок для браузера
header("Content-Type: image/png");
// выводим результат в браузер
imagepng($img); 
// очищаем память после выполнения скрипта
imagedestroy($img);
Рассказать друзьям:


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*