kruglov
Новичок
Человекочитаемые надписи. Давайте делиться алгоритмами.
Давайте делиться алгоритмами генерации картинок с зашумленными текстами для отсеивания роботов.
Вот мой вариант на основе библиотеки ImageMagick.
Краткая идея — множественный -swirl в разных центрах на разные углы.
Как это выглядит: http://www.kruglov.ru/no-ocr/
Код демонстрационного примера:
Давайте делиться алгоритмами генерации картинок с зашумленными текстами для отсеивания роботов.
Вот мой вариант на основе библиотеки ImageMagick.
Краткая идея — множественный -swirl в разных центрах на разные углы.
Как это выглядит: http://www.kruglov.ru/no-ocr/
Код демонстрационного примера:
PHP:
<h1>squiggly string</h1>
<?
$convert="/usr/local/magiclib/bin/convert";
$file_out="out.gif";
$direction=rand(0,1)==0?-1:1;
// в папке лежат несколько шрифтов TTF
$fonts=array();
if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle))) {
if (preg_match('/\.ttf$/i',$file)) {
$fonts[]=$file;
}
}
closedir($handle);
}
// кодовая строка
$keystring=RAND(100000,999999);
// генерим картинку
$cmd=$convert." -size 300x100 xc:white -colorspace RGB -antialias -fill black -font ".$fonts[rand(0,count($fonts)-1)]." -pointsize 70 -draw 'text 20,70 \"".$keystring."\"' -negate -extent 400x120 -roll +".rand(95,105)."+".rand(0,20)." -swirl ".(rand(37,51)*$direction)." -extent 600x140 -roll +".rand(0,10)."+".rand(0,20)." -swirl ".(-rand(20,35)*$direction)." -crop 300x100+100+17 +repage -negate -resize 150x50 ".$file_out;
exec($cmd);
// нарушаем безопасность, выводим всю подноготную юзеру ;)
echo "<p>".$cmd."</p>";
?>
<img src="<?=$file_out.'?rand='.rand()?>" style="border: solid 1px gray" width=150 height=50>