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,194
    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(100, 999);
        }
        else
        {
            
    $string = $_SESSION['step2'] = rand(100, 999);
        }   
        
        
    $im = imagecreatetruecolor(80, 45);
        
    imagealphablending($im, false);
        
    imagesavealpha($im, true);
        
    $trans = imagecolorallocatealpha($im, 255, 255, 255, 227);
        
    $black = imagecolorallocate($im, 255, 255, 0);
        
    imagefilledrectangle($im, 0, 0, 299, 299, $trans);
        
    imagealphablending($im, true);
        
    imagettftext($im, 40, 0, 0, 48, $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($im, 255, 255, 255); // цвет фона
    $font = imagecolorallocate($im, 51, 51, 51); // цвет текста
    imagettftext($im, 14, 0, 8, 26, $font, "/font.ttf", $captcha_keystring);

    $im1 = imagecreate($width, $height);
    $bg = imagecolorallocate($im1, 255, 255, 255);

    $rand1 = mt_rand(700000, 1000000) / 15000000;
    $rand2 = mt_rand(700000, 1000000) / 15000000;
    $rand3 = mt_rand(700000, 1000000) / 15000000;
    $rand4 = mt_rand(700000, 1000000) / 15000000;
    // фазы
    $rand5 = mt_rand(0, 3141592) / 1000000;
    $rand6 = mt_rand(0, 3141592) / 1000000;
    $rand7 = mt_rand(0, 3141592) / 1000000;
    $rand8 = mt_rand(0, 3141592) / 1000000;
    // амплитуды
    $rand9 = mt_rand(400, 600) / 100;
    $rand10 = mt_rand(400, 600) / 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... ну найди ёп тваю, будто я не искал