ФорумПрограммированиеПыхнуть хотите?F.A.Q. → Рисуем капчу с помощью Imagick

Рисуем капчу с помощью Imagick

  • Mr.Pihto

    Сообщения: 1386 Репутация: N Группа: Адекваты

    Spritz 24 августа 2009 г. 7:46

    Расскажу и покажу как можно быстро и просто нарисовать я бы сказал красивую, но скорей обычную приемлимую капчу :)


    //Сначало создаём спизженную с пыхи функцию для генерации рандомных символов :)
    function text($n=5)
    {
    $key = '';
    $pattern = '1234567890abcdefghijklmnopqrstuvwxyz';
    $counter = strlen($pattern)-1;
    for($i=0; $i<$n; $i++)
    {
    $key .= $pattern{rand(0,$counter)};
    }
    return $key;
    }
    //Закатываем в $font путь к нашему шрифту
    $font = dirname(__FILE__).'/comic.ttf';
    //Инициализируем собсно класс
    $image = new Imagick();
    //Создаём картинку 150х50 и придаём фону белый цвет
    $image->newImage(150, 50, new ImagickPixel('white'));
    //Форматируем картинку. Придаём ей формат png
    $image->setImageFormat('png');
    //Инициализируем клас ImagickDraw
    $draw = new ImagickDraw();
    //Указываем шрифт
    $draw->setFont($font);
    //Придаём цвет тексту
    $draw->setFillColor(new ImagickPixel('black'));
    //Далее размер шрифта
    $draw->setFontSize(38);
    //Используем пыхофункцию для генерации случайного текста
    $string = text();
    //Состовляем текст. 25 - кол-во пикселей между текстом и гранью картинки по оси X, 35 - по оси Y
    $draw->annotation(25,35,$string);
    //Накладываем его на картинку
    $image->drawImage($draw);
    //Придаём искажение в виде завихрения против часовой стрелки на 30 градусов (если число отрицателльно - по часовой)
    $image->swirlImage(30);
    //Отсылаем заголовок о том что выводимые данные будут картинкой (png в нашем случае)
    header('Content-type: image/png');
    //Выводим картинку
    echo $image;
    //Разрушаем объект класса
    $image->destroy();


    Все :)
    Результат во вложениях
    Пример тут http://pihto.no-ip.org/capcha.php
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 24 августа 2009 г. 7:53, спустя 6 минут 58 секунд

    1. Рандомную функцию, можно заменить на substr(uniqid(…
    2. Надо разъяснить, что данный пример показывает общие принципы, а для формирования реальной каптчи не помещает дополнить пример дополнительными графическими эффектами (размытие, шум итд), рандомным выбором цвета букв, рандомным выбором размера шрифта каждой буквы итд итп
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 24 августа 2009 г. 8:04, спустя 10 минут 37 секунд

    че это за хуйня? ))))))))))))))))
    Спустя 55 сек.
    да вы что здесь, совсем охуели? :)))))))))
    http://epsyl.ru/web/captcha-imagick/
    все умрут, а я изумруд
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 24 августа 2009 г. 8:18, спустя 13 минут 51 секунду

    А теперь все сюда http://wiki.adw0rd.ru/index.php/IMagick на работы по переводу!
    adw/0
  • Mr.Pihto

    Сообщения: 1386 Репутация: N Группа: Адекваты

    Spritz 24 августа 2009 г. 8:22, спустя 3 минуты 42 секунды


    че это за хуйня? ))))))))))))))))
    Спустя 55 сек.
    да вы что здесь, совсем охуели? :)))))))))
    http://epsyl.ru/web/captcha-imagick/

    я эту страницу впервый раз вижу. Ааа я использовал теже функции… да что там функции я ж теже буквы что и ты использовал. извини :(
    Спустя 11 сек.
    :)
    Спустя 112 сек.
    ы. размер такойже
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 24 августа 2009 г. 8:42, спустя 20 минут 11 секунд

    function text($n=5)
    {
    $key = '';
    $pattern = '1234567890abcdefghijklmnopqrstuvwxyz';
    $counter = strlen($pattern)-1;
    for($i=0; $i<$n; $i++)
    {
    $key .= $pattern{rand(0,$counter)};
    }
    return $key;
    }

    вот этот позор убери хоть
    Спустя 40 сек.

    А теперь все сюда http://wiki.adw0rd.ru/index.php/IMagick на работы по переводу!
    вот когда активируешь мою запись, тогда буду переводить
    твой ебаный викей не прислал мне письмо а новый акк я не буду регить
    все умрут, а я изумруд
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 24 августа 2009 г. 8:47, спустя 5 минут 29 секунд

    твой ебаный викей не прислал мне письмо а новый акк я не буду регить
    тебе вообще редко почта доходит, впринципе ;)
    Спустя 9 сек.
    с пыхи в том числе )
    adw/0
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 24 августа 2009 г. 8:48, спустя 48 секунд


    твой ебаный викей не прислал мне письмо а новый акк я не буду регить
    тебе вообще редко почта доходит, впринципе ;)
    Спустя 9 сек.
    с пыхи в том числе )
    :)
    не знаю, от тех, кто отправляет — доходит
    твоя вика мне не отправляла походу) как и ЛС на пыхе, чтоб его в сраку)
    все умрут, а я изумруд
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 24 августа 2009 г. 8:51, спустя 2 минуты 26 секунд

    md5, интересен тот факт, что всем остальным доходит ;)
    я думаю твои провайдеры в спам добавили пыхо-ип
    adw/0
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 24 августа 2009 г. 8:54, спустя 3 минуты 1 секунду


    md5, интересен тот факт, что всем остальным доходит ;)
    я думаю твои провайдеры в спам добавили пыхо-ип
    отправь мне лс
    или оно не информит, если считает что я на форуме? Оо
    все умрут, а я изумруд
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 24 августа 2009 г. 9:01, спустя 7 минут

    или оно не информит, если считает что я на форуме? Оо
    да вроде всегда информит, ща отправлю
    adw/0
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 24 августа 2009 г. 22:35, спустя 13 часов 34 минуты 49 секунд

    ага, есть
    все умрут, а я изумруд
  • Mr.Pihto

    Сообщения: 1386 Репутация: N Группа: Адекваты

    Spritz 26 августа 2009 г. 18:04, спустя 1 день 19 часов 29 минут

    adw0rd, хуйнюшку 1 перевёл
    http://wiki.adw0rd.ru/index.php/Imagick:clutImage
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 26 августа 2009 г. 22:46, спустя 4 часа 41 минуту 55 секунд


    adw0rd, хуйнюшку 1 перевёл
    http://wiki.adw0rd.ru/index.php/Imagick:clutImage

    спасибо :)
    adw/0

Пожалуйста, авторизуйтесь, чтобы написать комментарий!