Появилась довольно нестандартная задача, необходимо было все упоминания ФИО человека на сайте сделать неиндексируемыми. Прошерстив интернет, понял, что единственно 100% рабочий способ - это изображение. Ну и собственно проблема была решена с помощью штатных средств PHP.
//Функция генерации изображения из текста
function getImageFromText($text, $size_font = 12, $font_height, $font_width) {
//header('Content-Type: image/png');
//Рассчитываем количество символов в строке
$count_sumbols = iconv_strlen($text);
//Определяем размеры изображения, которое необходимо создать
$img_width = $count_sumbols * $font_width;
$img_height = $font_height;
//Создаём изображение
$im = imagecreatetruecolor($img_width, $img_height);
//Задаём цвета в RGB
$white = imagecolorallocate($im, 255, 255, 255); //Фон
$blue = imagecolorallocate($im, 7, 41, 77); //Текст
imagefilledrectangle($im, 0, 0, $img_width, $img_height, $white);
//Шрифт который используется на сайте (загрузите предварительно)
$font = '/fonts/Roboto-Bold.ttf';
//Наносим текст на изображение
imagettftext($im, $size_font, 0, 0, 20, $blue, $font, $text);
ob_start();
imagepng($im);
//Помещаем содержимое буфера (изображение) в переменную
$output = ob_get_contents();
//Очищаем содержимое буфера
ob_end_clean();
//Выводим изображение
echo '<img src="data: image/png;base64,'.base64_encode($output).'" />';
}
Я немного поленился, и не стал передавать в функцию цвет шрифта и цвет фона изображения и вписал его жестко, но вы можете без труда доработать под себя.
<?php getImageFromText('Это не текст, это картинка', 12, 25, 9); ?>
- $text - текст для кодирования в изображение
- $size_font - размер шрифта в пунктах
- $font_height - высота заглавной буквы (я предварительно линейкой замерил высоту буквы в своём шрифте на сайте)
- $font_width - также, линейкой замерил ширину буквы.
Замерять размеры букв нужно для того, что бы корректно сформировался размер изображения.
Спасибо!