captcha искажение алгоритм

Discussion in 'PHP' started by necroleptick, 12 Apr 2011.

  1. necroleptick

    necroleptick Member

    Joined:
    3 Jan 2011
    Messages:
    105
    Likes Received:
    11
    Reputations:
    0
    мне нужен алгоритм искажения изображения(текст волной или закрутить вокруг центра). нигде алгоритма самого не нашел. не нужно готовое решение на пхп. напишите хоть а какую сторону копать математика геометрия и книга может по компьютерной графике может какая т.д.(ссылки на kcaptcha.ru не давать)
     
  2. necroleptick

    necroleptick Member

    Joined:
    3 Jan 2011
    Messages:
    105
    Likes Received:
    11
    Reputations:
    0
    Нашёл формулу для "деформации" чисто случайно(гугл вообще молчит на эту тему). Как сгладить изображение?
     
  3. necroleptick

    necroleptick Member

    Joined:
    3 Jan 2011
    Messages:
    105
    Likes Received:
    11
    Reputations:
    0
    Сглаживание, замутнение, оконтуривание



    В начале создается матpица 3x3:
    |a b c|
    |d e f|
    |g h k|

    Затем делаешь цикл по изобpажению: допустим кооpдината текущей точки P(i,j), то в эту кооpдинату записываешь такое значание:

    P(i,j) = ( a*P(i-1,j-1)+b*P(i,j-1)+c*P(i+1,j-1)+ + d*P(i-1,j) + e*P(i,j) + f*P(i+1,j) + + g*P(i-1,j+1)+h*P(i,j+1)+k*P(i+1,j+1) ) / (a+b+c+d+e+f+g+h+k);

    пpи a=b=c=d=e=f=g=h=k = 1 получается сглаживание.
    пpи матpице:

    |1 0 1|
    |0 -4 0|
    |1 0 1|

    получается оконтуpивание.


    Ууу а a,b,c,d,e,f,g,h,k - это что такое?
     
  4. Buffalon

    Buffalon Elder - Старейшина

    Joined:
    22 Mar 2008
    Messages:
    241
    Likes Received:
    34
    Reputations:
    8
    В смысле, это же матрица ??
    |a b c|
    |d e f|
    |g h k|

    |1 0 1|
    |0 -4 0|
    |1 0 1|
     
  5. necroleptick

    necroleptick Member

    Joined:
    3 Jan 2011
    Messages:
    105
    Likes Received:
    11
    Reputations:
    0
    матрица, а эти переменные откуда брать что это такое?
     
  6. necroleptick

    necroleptick Member

    Joined:
    3 Jan 2011
    Messages:
    105
    Likes Received:
    11
    Reputations:
    0
    http://www.codeproject.com/KB/GDI/antialias.aspx ебаный индус написал какую-то ***ню и смеётся надо мной

    [​IMG]
     
    1 person likes this.
  7. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Вот тебе оригинальная капча, которую никто не пробьет.
    Показывается 2 капчи, но с виду это не видно (как-будто одна) и надо ввести число с 2 картинок сразу.

    index.php
    PHP:
    <?php
        session_start
    ();
        
    ?>
        <img src="captcha.php?step=1" /><img src="captcha.php?step=2" />
        <form method="post">
        Введите число: <input type="text" name="getСode">
        <input name="sub" type=submit value="Ввод">
        </form>
        <?php
        
    if($_POST['sub'])
        {
            if(
    $_POST['getСode'] == $_SESSION['step1'].$_SESSION['step2'])
            {
                echo 
    "Число введено верно";
            }
            else
            {
                echo 
    "Число введено неверно";
            }
        }
    captcha.php
    PHP:
    <?php
        
    /********************************
         * © Isis 2011 !!!!!
         *******************************/
        
    session_start();
        
        
    $step = isset($_GET['step']) ? intval($_GET['step']) : null;
        
        if (
    $step == 1)
        {
            
    $string $_SESSION['step1'] = rand(100999);
        }
        else
        {
            
    $string $_SESSION['step2'] = rand(100999);
        }   
        
        
    $im imagecreatetruecolor(8045);
        
    imagealphablending($imfalse);
        
    imagesavealpha($imtrue);
        
    $trans imagecolorallocatealpha($im255255255227);
        
    $black imagecolorallocate($im2552550);
        
    imagefilledrectangle($im00299299$trans);
        
    imagealphablending($imtrue);
        
    imagettftext($im400048$black'28 Days Later.ttf'$string);
        
    header("Content-type: image/png");
        
    imagepng($im);
        
    imagedestroy($im);
     
  8. necroleptick

    necroleptick Member

    Joined:
    3 Jan 2011
    Messages:
    105
    Likes Received:
    11
    Reputations:
    0
    я такую сам могу сделать, лучше скажи как сгладить вот такое изображение [​IMG] ?
     
  9. necroleptick

    necroleptick Member

    Joined:
    3 Jan 2011
    Messages:
    105
    Likes Received:
    11
    Reputations:
    0
    http://courses.engr.illinois.edu/ece390/archive/archive-f2000/mp/mp4/anti.html

    ещё дротату для линий нашёл, но всё не то... Кто-нибудь подскажет?
     
  10. necroleptick

    necroleptick Member

    Joined:
    3 Jan 2011
    Messages:
    105
    Likes Received:
    11
    Reputations:
    0
    Блять вообщем такая ***ня полнейшая получилась
    PHP:
    // session_start();

    $chars "QWERTYUIOPASDFGHJKLZXCVBNM123456789"// 0 нет
    // string -> array
    $chars str_split($chars);

    $captcha_keystring_length 6// количество символов

    $captcha_keystring "";
    $i 0;
    while (
    $i++ < $captcha_keystring_length) {
        
    $captcha_keystring.= $chars[array_rand($chars)];
    }

    // $_SESSION["captcha_keystring"] = $captcha_keystring;

    $width 120;
    $height 40;

    $im imagecreate($width$height); // создали холст
    $bg imagecolorallocate($im255255255); // цвет фона
    $font imagecolorallocate($im515151); // цвет текста
    imagettftext($im140826$font"/font.ttf"$captcha_keystring);

    $im1 imagecreate($width$height);
    $bg imagecolorallocate($im1255255255);

    $rand1 mt_rand(7000001000000) / 15000000;
    $rand2 mt_rand(7000001000000) / 15000000;
    $rand3 mt_rand(7000001000000) / 15000000;
    $rand4 mt_rand(7000001000000) / 15000000;
    // фазы
    $rand5 mt_rand(03141592) / 1000000;
    $rand6 mt_rand(03141592) / 1000000;
    $rand7 mt_rand(03141592) / 1000000;
    $rand8 mt_rand(03141592) / 1000000;
    // амплитуды
    $rand9 mt_rand(400600) / 100;
    $rand10 mt_rand(400600) / 100;


    $xx $width 1;
    $yy $height 1;
    for (
    $x 0$x $xx; ++$x) {
        for (
    $y 0$y <= $yy; ++$y) { 
            
    $sx $x + (sin($x $rand1 $rand5) + sin($y $rand3 $rand6)) * $rand9;
            
    $sy $y + (sin($x $rand2 $rand7) + sin($y $rand4 $rand8)) * $rand10;  
            
    $color imagecolorat($im$x$y);
            
    imagesetpixel($im1$sx$sy$color);  
            
    // $color = imagecolorat($im, $x, $y);
            // imagesetpixel($im1, $x, $y, $color);
        
    }
    }

    header("Content-type: image/png"); // отправляем заголовки
    imagepng($im1); // выводим в браузер

    ?>
    Половину кода взял с капча.ру(как я ненавижу того мудака что выложил тот сраный пример пробую как там сделать получается какая-то ***ня скукоженная в левом углу). Что за блядство. Скажите хоть где в какой книге описано решение моей проблемы. Уже заебла эта высшая математика.
     
  11. necroleptick

    necroleptick Member

    Joined:
    3 Jan 2011
    Messages:
    105
    Likes Received:
    11
    Reputations:
    0
    высшая математика начинается с матриц. Примитивные эффекты вроде fish-eye, wave... ну найди ёп тваю, будто я не искал