Рецепт №101. Из книги «128 рецептов php»
Перейти к оглавлению
Ни для кого не секрет, что сайты, особенно крупные, постоянно сканируются роботами, и не только поисковыми. Зачастую спамеры собирают свои базы e-mail адресов, сканируя сайты. Чтобы это предотвратить, можно выводить e-mail пользователей не в текстовом виде, а картинкой. Для этого необходимо предварительно перевести текст в картинку, единственная проблема, возникающая при этом, это динамический размер изображения, поскольку длина e-mail всегда разная. В решении поможет, описанная в предыдущем рецепте, функция — imagettfbbox.
Пример:
// шрифт
$font = 'impact.ttf';
// размер текста
$fontSize = 12;
// текст. e-mail
$imgText = "admin@vk-book.ru";
// определяем размер картинки в зависимости
// от длины и размера текста
$boxText = ImageTTFBBox($fontSize, 0, $font, $imgText);
// размер будущей картинки
$widthImg = $boxText[2] - $boxText[0];
$heightImg = $boxText[1] - $boxText[7];
// создаем полотно
$img = imagecreatetruecolor($widthImg, $heightImg);
// задаем цвет фона
$fonColor = imagecolorallocate($img, 255, 255, 255);
// заливаем фон
imagefill($img, 0, 0, $fonColor);
// цвет текста
$textColor = imagecolorallocate ($img, 0, 0, 0);
// наносим текст
imagettftext (
$img, $fontSize, 0, 0, $fontSize,
$textColor, $font, $imgText
);
// выводим картинку в браузере
header("Content-type: image/png");
imagePng($img);
// очищаем память
imageDestroy($img);
