powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / php captcha wave effect
28 сообщений из 28, показаны все 2 страниц
php captcha wave effect
    #37487683
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не пойму что за гавно получается

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
 function  MultiWave($img)
{

$width= imagesx ($img);
$height= imagesy ($img);

$img2= imagecreatetruecolor ($width, $height);

$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 ;
 
 for ($x =  0 ; $x < $width; $x++){
   for ($y =  0 ; $y < $height; $y++){
    // координаты пикселя-первообраза.
    $sx = $x + (  sin ($x * $rand1 + $rand5) +  sin ($y * $rand3 + $rand6) ) * $rand9;
    $sy = $y + (  sin ($x * $rand2 + $rand7) +  sin ($y * $rand4 + $rand8) ) * $rand10;
 
    // первообраз за пределами изображения
     if ($sx <  0  || $sy <  0  || $sx >= $width -  1  || $sy >= $height -  1 ){ 
      $color =  255 ;
      $color_x =  255 ;
      $color_y =  255 ;
      $color_xy =  255 ;
    } else { // цвета основного пикселя и его 3-х соседей для лучшего антиалиасинга
      $color = ( imagecolorat ($img, $sx, $sy) >>  16 ) & 0xFF;
      $color_x = ( imagecolorat ($img, $sx +  1 , $sy) >>  16 ) & 0xFF;
      $color_y = ( imagecolorat ($img, $sx, $sy +  1 ) >>  16 ) & 0xFF;
      $color_xy = ( imagecolorat ($img, $sx +  1 , $sy +  1 ) >>  16 ) & 0xFF;
    }



    // сглаживаем только точки, цвета соседей которых отличается
     if ($color == $color_x && $color == $color_y && $color == $color_xy){
      $newcolor=$color;
    } else {
      $frsx = $sx -  floor ($sx); //отклонение координат первообраза от целого
      $frsy = $sy -  floor ($sy);
      $frsx1 =  1  - $frsx;
      $frsy1 =  1  - $frsy;

      // вычисление цвета нового пикселя как пропорции от цвета основного пикселя и его соседей
      $newcolor =  floor ( $color    * $frsx1 * $frsy1 +
                         $color_x  * $frsx  * $frsy1 +
                         $color_y  * $frsx1 * $frsy  +
                         $color_xy * $frsx  * $frsy );
    }
     imagesetpixel ($img2, $x, $y,  imagecolorallocate ($img2, $newcolor, $newcolor, $newcolor));
  }
}

 return  $img2;
}    

 session_start ();
 error_reporting ( 1 );
$keystring =  substr ( md5 ( mt_rand ( 0 ,  1024  *  1024 )),  0 ,  6 );
$_SESSION["captcha_keystring"] = $keystring;
$img =  imagecreatetruecolor ( 180 ,  80 );
// $background = imagecolorallocate($img, 255, 255, 255);
$color =  imagecolorallocate ($img,  237 ,  63 ,  40 );
 imagettftext ($img,  18 ,  0 ,  32 ,  54 , $color, "fonts/badaboom.ttf", $keystring);
$img2 = MultiWave($img);
 header ("Expires: Wed, 1 Jan 1997 00:00:00 GMT");
 header ("Last-Modified: " .  gmdate ("D, d M Y H:i:s") . " GMT");
 header ("Cache-Control: no-store, no-cache, must-revalidate");
 header ("Cache-Control: post-check=0, pre-check=0",  false );
 header ("Pragma: no-cache");
 header  ("Content-type: image/png");
 imagepng ($img2);
 imagedestroy ($img2);

...
Рейтинг: 0 / 0
php captcha wave effect
    #37487685
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот без применения этой функции. не пойму как сделать? какая-то хрень и танцы с бубном
...
Рейтинг: 0 / 0
php captcha wave effect
    #37487692
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопросы у меня следующие:

1) куда пропадает оранжевый
2) почему края белые
3) почему текст белый
...
Рейтинг: 0 / 0
php captcha wave effect
    #37488129
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
green_troll,

автор $color = (imagecolorat($img, $sx, $sy) >> 16) & 0xFF;
$color_x = (imagecolorat($img, $sx + 1, $sy) >> 16) & 0xFF;
$color_y = (imagecolorat($img, $sx, $sy + 1) >> 16) & 0xFF;
$color_xy = (imagecolorat($img, $sx + 1, $sy + 1) >> 16) & 0xFF;
Может дело в том что imagecolorat возращает индекс в палитре а не хекс цвета?
...
Рейтинг: 0 / 0
php captcha wave effect
    #37488392
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренат,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    } else { // цвета основного пикселя и его 3-х соседей для лучшего антиалиасинга
      $color = ( imagecolorat ($img, $sx, $sy) >>  16 ) & 0xFF;
      $color_x = ( imagecolorat ($img, $sx +  1 , $sy) >>  16 ) & 0xFF;
      $color_y = ( imagecolorat ($img, $sx, $sy +  1 ) >>  16 ) & 0xFF;
      $color_xy = ( imagecolorat ($img, $sx +  1 , $sy +  1 ) >>  16 ) & 0xFF;
       var_dump ($color, $color_x, $color_y, $color_xy);
       echo  "<br />";
    }

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
int( 0 ) int( 0 ) int( 0 ) int( 0 ) 
int( 0 ) int( 0 ) int( 0 ) int( 0 ) 
int( 0 ) int( 0 ) int( 0 ) int( 0 ) 
int( 0 ) int( 0 ) int( 0 ) int( 0 ) 
int( 0 ) int( 0 ) int( 0 ) int( 0 ) 
int( 0 ) int( 0 ) int( 0 ) int( 0 ) 
int( 0 ) int( 0 ) int( 0 ) int( 0 ) 
int( 0 ) int( 0 ) int( 0 ) int( 0 ) 
int( 0 ) int( 0 ) int( 0 ) int( 0 ) 
int( 0 ) int( 0 ) int( 0 ) int( 0 ) 
int( 0 ) int( 0 ) int( 0 ) int( 0 ) 
int( 0 ) int( 0 ) int( 0 ) int( 0 ) 
int( 0 ) int( 0 ) int( 0 ) int( 0 ) 
int( 0 ) int( 0 ) int( 0 ) int( 0 )

по побитовому сдвигу очевидно что выполняется какое-то магическое действо

пример из мануала
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?php
$im =  imagecreatefrompng ("php.png");
$rgb =  imagecolorat ($im,  10 ,  15 );
$r = ($rgb >>  16 ) & 0xFF;
$g = ($rgb >>  8 ) & 0xFF;
$b = $rgb & 0xFF;

 var_dump ($r, $g, $b);
?>

т.е. в этой ф-ии определяется только красный, а ф-ия

$color = imagecolorallocate($img, 255, 255, 255);
var_dump($color);

возвращает знаечение

16777215 (255 ^ 3)

А зачем тогда спрашивается нужна ф-ия imagecolorallocate, зачем в неё передаётся в качестве аргумента $img(ну первый раз понятно задаётся фон)?

я не пойму эта нерабочая ф-ия чтоли была намеренно выложена или у меня руки кривые
...
Рейтинг: 0 / 0
php captcha wave effect
    #37488422
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
green_troll,

к примеру посмотрите описание png.
вы никогда не замечали что в png ограниченый набор цветов(устанавлвиаеться дизайнером)?
у него есть своя таблица цветов. ЧТобы отобразить в этой пнгшке какой либо цвет, надо соотвественно зарегистрировать в этой таблице этот цвет.
Вот функци imagecolorallocate и делает регистрацию цвета в табоице цветов.
Так что пользуйтесь функциями imagecolorat, imagecolorallocate и imagecolorsforindex для определения цвета и установки на изображении.
...
Рейтинг: 0 / 0
php captcha wave effect
    #37488426
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задаю явно цвет без имейджколорат

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 session_start ();
 error_reporting ( 1 );
$keystring =  substr ( md5 ( mt_rand ( 0 ,  1024  *  1024 )),  0 ,  6 );
$_SESSION["captcha_keystring"] = $keystring;
$img =  imagecreatetruecolor ( 180 ,  80 );
// $background = imagecolorallocate($img, 255, 255, 255);
$color =  imagecolorallocate ($img,  255 ,  255 ,  255 );

// var_dump($color);
// 120 * 120 * 120 = 1728000
 imagettftext ($img,  18 ,  0 ,  32 ,  54 ,  1728000 , "fonts/badaboom.ttf", $keystring);
// $img2 = MultiWave($img);
 header ("Expires: Wed, 1 Jan 1997 00:00:00 GMT");
 header ("Last-Modified: " .  gmdate ("D, d M Y H:i:s") . " GMT");
 header ("Cache-Control: no-store, no-cache, must-revalidate");
 header ("Cache-Control: post-check=0, pre-check=0",  false );
 header ("Pragma: no-cache");
 header  ("Content-type: image/png");
 imagepng ($img);
 imagedestroy ($img);

картинка зелёная а хотя rgb(120, 120, 120) серый, значит что-то ещё происходит
...
Рейтинг: 0 / 0
php captcha wave effect
    #37488428
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
green_trollя не пойму эта нерабочая ф-ия чтоли была намеренно выложена или у меня руки кривые
второе.
для выпрямления срочно читайте мануал до полного понимания того что одна из них возвращает цвет запрошенного пиксела, а вторая устанавливает цвет, которым потом можно пользоваться в других функциях...
...
Рейтинг: 0 / 0
php captcha wave effect
    #37488457
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
green_troll// 120 * 120 * 120 = 1728000

это что за бред?
imagecolorallocate() работает совсем не так.
для начала, разберитесь что такое битовые сдвиги, и почему нужно делать $r = ($rgb >> 16) & 0xFF;
...
Рейтинг: 0 / 0
php captcha wave effect
    #37488525
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r u, при чём тут мануал там получаются только красные цвета, функция не моя
...
Рейтинг: 0 / 0
php captcha wave effect
    #37488535
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r u,

вот получили красные

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 if ($color == $color_x && $color == $color_y && $color == $color_xy){ // если все 255 например, то $newcolor 255
      $newcolor=$color;
    } else {
      $frsx = $sx -  floor ($sx); //отклонение координат первообраза от целого
      $frsy = $sy -  floor ($sy);
      $frsx1 =  1  - $frsx;
      $frsy1 =  1  - $frsy;

      // вычисление цвета нового пикселя как пропорции от цвета основного пикселя и его соседей
      // что это за жопа, зачем умножаются оттенки красного на координаты и складываются?
      $newcolor =  floor ( $color    * $frsx1 * $frsy1 +
                         $color_x  * $frsx  * $frsy1 +
                         $color_y  * $frsx1 * $frsy  +
                         $color_xy * $frsx  * $frsy );
    }
     imagesetpixel ($img2, $x, $y,  imagecolorallocate ($img2, $newcolor, $newcolor, $newcolor));
...
Рейтинг: 0 / 0
php captcha wave effect
    #37488773
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я в гугле смотрел image distortion algorithms ничего нет как будто никто ничего не знает, а что самое обидное так это за рашку ибо ни наших математиков ни программистов такое ощущение что вообще не существует, что в принципе доказывает теорему о том что 99% россиян дебилы и интеллектуальном превосходстве англосаксов(хотя среди них процент умственно отсталых намного выше)
...
Рейтинг: 0 / 0
php captcha wave effect
    #37488795
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот и получается кодомакак миллионы, а программистов единицы, а со всякими библиотеками и фреймворками даже думать не надо, мир и в правду ужасен так гляди и через 50 лет нас поработят роботы
...
Рейтинг: 0 / 0
php captcha wave effect
    #37488806
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
green_troll, http://bookinist.net/books/bookid-1019.html даже книг на русском нет всё эта непонятная дрочка на OpenGL и DirectX
...
Рейтинг: 0 / 0
php captcha wave effect
    #37488877
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
green_trollgreen_troll, http://bookinist.net/books/bookid-1019.html даже книг на русском нет всё эта непонятная дрочка на OpenGL и DirectX
Зачем вам ОпенДжиэль и Дирекикс?
До вас милионы проограмистов писали и ниче, а у вас как всегда что то не так...
протестил ваш код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
<?php
 function  MultiWave($img){
	$width= imagesx ($img);
	$height= imagesy ($img);
	$img2= imagecreatetruecolor ($width, $height);

	$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 ;

	 for ($x =  0 ; $x < $width; $x++){
		 for ($y =  0 ; $y < $height; $y++){
			// координаты пикселя-первообраза.
			$sx = $x + (  sin ($x * $rand1 + $rand5) +  sin ($y * $rand3 + $rand6) ) * $rand9;
			$sy = $y + (  sin ($x * $rand2 + $rand7) +  sin ($y * $rand4 + $rand8) ) * $rand10;

			// первообраз за пределами изображения
			 if ($sx <  0  || $sy <  0  || $sx >= $width -  1  || $sy >= $height -  1 ){ 
				$color =  255 ;
				$color_x =  255 ;
				$color_y =  255 ;
				$color_xy =  255 ;
			} else { // цвета основного пикселя и его 3-х соседей для лучшего антиалиасинга
				$color = ( imagecolorat ($img, $sx, $sy) >>  16 ) & 0xFF;
				$color_x = ( imagecolorat ($img, $sx +  1 , $sy) >>  16 ) & 0xFF;
				$color_y = ( imagecolorat ($img, $sx, $sy +  1 ) >>  16 ) & 0xFF;
				$color_xy = ( imagecolorat ($img, $sx +  1 , $sy +  1 ) >>  16 ) & 0xFF;
			}



			// сглаживаем только точки, цвета соседей которых отличается
			 if ($color == $color_x && $color == $color_y && $color == $color_xy){
			$newcolor=$color;
			} else {
				$frsx = $sx -  floor ($sx); //отклонение координат первообраза от целого
				$frsy = $sy -  floor ($sy);
				$frsx1 =  1  - $frsx;
				$frsy1 =  1  - $frsy;

				// вычисление цвета нового пикселя как пропорции от цвета основного пикселя и его соседей
				$newcolor =  floor ( $color    * $frsx1 * $frsy1 +
				$color_x  * $frsx  * $frsy1 +
				$color_y  * $frsx1 * $frsy  +
				$color_xy * $frsx  * $frsy );
			}
			 imagesetpixel ($img2, $x, $y,  imagecolorallocate ($img2, $newcolor, $newcolor, $newcolor));
		}
	}

	 return  $img2;
}    

 session_start ();
 error_reporting ( 1 );
$keystring =  substr ( md5 ( mt_rand ( 0 ,  1024  *  1024 )),  0 ,  6 );
$img =  imagecreatetruecolor ( 180 ,  80 );
//$color = imagecolorallocate($img, 255, 255, 255);
//imagefilledrectangle($img,0,0,180,80,$color);
$color =  imagecolorallocate ($img,  237 ,  63 ,  40 );
 imagettftext ($img,  18 ,  0 ,  32 ,  54 , $color, "badaboom.ttf", $keystring);
$img2 = MultiWave($img);
 header ("Expires: Wed, 1 Jan 1997 00:00:00 GMT");
 header ("Last-Modified: " .  gmdate ("D, d M Y H:i:s") . " GMT");
 header ("Cache-Control: no-store, no-cache, must-revalidate");
 header ("Cache-Control: post-check=0, pre-check=0",  false );
 header ("Pragma: no-cache");
 header  ("Content-type: image/png");
 imagepng ($img2);

Никаких красных цветов нет, и я не знаю где вы их нашли.
Имхо используйте готовые библиотеки такие как reCaptcha и будет вам счастье, и нервы програмистов sql.ru поэкономите заодно.
...
Рейтинг: 0 / 0
php captcha wave effect
    #37488929
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренат, а никаких красных(оттенок красного там с помощью побитового сдвига получается зеленый синий игнорируются затем красный на координаты умножается) и недолжно быть получилось тоже самое что и у меня, у меня было оранжевй текст на черном фоне после преобразований получилось белый за пределами первоначального изображения черный на месте вместо оранжевого белый
...
Рейтинг: 0 / 0
php captcha wave effect
    #37488947
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если изображение на белом фоне то вообще черное полотно и чуть-чуть белого по краям
...
Рейтинг: 0 / 0
php captcha wave effect
    #37488986
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
green_troll,

вы сами пишите
Код: plaintext
 imagesetpixel ($img2, $x, $y,  imagecolorallocate ($img2, $newcolor, $newcolor, $newcolor));
ежику очевидно, что тут определяеться какой то серый цвет. Только серый. Что тут паранормального? Куда оранжевый исчез?
...
Рейтинг: 0 / 0
php captcha wave effect
    #37489005
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренат, то не мой код, я в геометрии уже совсем не секу

вот ещё пример
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    // http://php.net/manual/ru/function.imagecopy.php
     function  wave_region($img, $x, $y, $width, $height,$amplitude =  4 . 5 ,$period =  30 )
     {
         // Make a copy of the image twice the size
         $mult =  2 ;
         $img2 =  imagecreatetruecolor ($width * $mult, $height * $mult);
          imagecopyresampled  ($img2,$img, 0 , 0 ,$x,$y,$width * $mult,$height * $mult,$width, $height);

         // Wave it
          for  ($i =  0 ;$i < ($width * $mult);$i +=  2 )
         {
             imagecopy ($img2,$img2,
                $x + $i -  2 ,$y +  sin ($i / $period) * $amplitude,    // dest
                $x + $i,$y,            // src
                 2 ,($height * $mult));
         }
         
         // Resample it down again
          imagecopyresampled  ($img,$img2,$x,$y, 0 , 0 ,$width, $height,$width * $mult,$height * $mult);
          imagedestroy ($img2);
     }
эта ф-ия работает но картинка получается с неровными краями
...
Рейтинг: 0 / 0
php captcha wave effect
    #37489006
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у букав
...
Рейтинг: 0 / 0
php captcha wave effect
    #37489261
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин хотелось эффект добавить, но ничего такая каптча тоже сойдёт
...
Рейтинг: 0 / 0
php captcha wave effect
    #37489264
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не то прикрепил
...
Рейтинг: 0 / 0
php captcha wave effect
    #37489318
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
green_troll,

Очень удивляюсь тому факту, что Вы до сих пор не забанены.
...
Рейтинг: 0 / 0
php captcha wave effect
    #37489341
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
green_trollя в гугле смотрел image distortion algorithms
так и не будет.
выигрышная стратегия писания на php заключается в умелом использовании функций написанных на C. всякие там gd и imagemagic.
какой смысл на скриптовом языке изображать математику?
это же капча. пользователь должен ее по 4 раза прочитать. они вам сайт положат.
...
Рейтинг: 0 / 0
php captcha wave effect
    #37489757
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
посмотрел исходники кал каптчи автор намеренно выложил нерабочий код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
// periods
		$rand1= mt_rand ( 750000 , 1200000 )/ 10000000 ;
		$rand2= mt_rand ( 750000 , 1200000 )/ 10000000 ;
		$rand3= mt_rand ( 750000 , 1200000 )/ 10000000 ;
		$rand4= mt_rand ( 750000 , 1200000 )/ 10000000 ;
		// phases
		$rand5= mt_rand ( 0 , 31415926 )/ 10000000 ;
		$rand6= mt_rand ( 0 , 31415926 )/ 10000000 ;
		$rand7= mt_rand ( 0 , 31415926 )/ 10000000 ;
		$rand8= mt_rand ( 0 , 31415926 )/ 10000000 ;
		// amplitudes
		$rand9= mt_rand ( 330 , 420 )/ 110 ;
		$rand10= mt_rand ( 330 , 450 )/ 110 ;

		//wave distortion

		 for ($x= 0 ;$x<$width;$x++){
			 for ($y= 0 ;$y<$height;$y++){
				$sx=$x+( sin ($x*$rand1+$rand5)+ sin ($y*$rand3+$rand6))*$rand9-$width/ 2 +$center+ 1 ;
				$sy=$y+( sin ($x*$rand2+$rand7)+ sin ($y*$rand4+$rand8))*$rand10;

				 if ($sx< 0  || $sy< 0  || $sx>=$width- 1  || $sy>=$height- 1 ){
					 continue ;
				} else {
					$color= imagecolorat ($img, $sx, $sy) & 0xFF;
					$color_x= imagecolorat ($img, $sx+ 1 , $sy) & 0xFF;
					$color_y= imagecolorat ($img, $sx, $sy+ 1 ) & 0xFF;
					$color_xy= imagecolorat ($img, $sx+ 1 , $sy+ 1 ) & 0xFF;
				}

				 if ($color== 255  && $color_x== 255  && $color_y== 255  && $color_xy== 255 ){
					 continue ;
				} else   if ($color== 0  && $color_x== 0  && $color_y== 0  && $color_xy== 0 ){
					$newred=$foreground_color[ 0 ];
					$newgreen=$foreground_color[ 1 ];
					$newblue=$foreground_color[ 2 ];
				} else {
					$frsx=$sx- floor ($sx);
					$frsy=$sy- floor ($sy);
					$frsx1= 1 -$frsx;
					$frsy1= 1 -$frsy;

					$newcolor=(
						$color*$frsx1*$frsy1+
						$color_x*$frsx*$frsy1+
						$color_y*$frsx1*$frsy+
						$color_xy*$frsx*$frsy);

					 if ($newcolor> 255 ) $newcolor= 255 ;
					$newcolor=$newcolor/ 255 ;
					$newcolor0= 1 -$newcolor;

					$newred=$newcolor0*$foreground_color[ 0 ]+$newcolor*$background_color[ 0 ];
					$newgreen=$newcolor0*$foreground_color[ 1 ]+$newcolor*$background_color[ 1 ];
					$newblue=$newcolor0*$foreground_color[ 2 ]+$newcolor*$background_color[ 2 ];
				}

				 imagesetpixel ($img2, $x, $y,  imagecolorallocate ($img2, $newred, $newgreen, $newblue));
			}
		}
...
Рейтинг: 0 / 0
php captcha wave effect
    #37494197
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
<?php

 error_reporting ( 1 );
$font_file = "fonts/calibri.ttf";
$font_size =  18 ;
$keystring =  substr ( md5 ( mt_rand ()),  0 ,  3 );
$spacing =  9 ;
$width = ($font_size + $spacing) *  strlen ($keystring) + $spacing;
$height = $font_size + $spacing *  2 ;
$padding_top = $font_size + $spacing;
 session_start ();
$_SESSION["captcha_keystring"] = $keystring;
$img =  imagecreate ($width, $height);
$background =  imagecolorallocate ($img,  255 ,  255 ,  255 );
$color =  imagecolorallocate ($img,  0 ,  0 ,  0 );
$keystring =  str_split ( strtoupper ($keystring));
$padding_left = $spacing;
$half_spacing = $spacing /  2 ;
$half_font_size = $font_size /  2 ;
 for  ($i =  0 ; $i <  count ($keystring); ++$i) {
     imagettftext ($img, $font_size +  mt_rand (-$half_font_size, $half_font_size),  mt_rand (- 15 ,  15 ), $padding_left +  mt_rand (-$half_spacing, $half_spacing), $padding_top +  mt_rand (-$half_spacing, $half_spacing), $color, $font_file, $keystring[$i]);
    $padding_left += $font_size + $spacing;
}

$img2 =  imagecreate ($width, $height);

$rand1 =  mt_rand ( 750000 , 1200000 )/ 10000000 ;
$rand2 =  mt_rand ( 750000 , 1200000 )/ 10000000 ;
$rand3 =  mt_rand ( 750000 , 1200000 )/ 10000000 ;
$rand4 =  mt_rand ( 750000 , 1200000 )/ 10000000 ;

// phases
$rand5 =  mt_rand ( 0 , 31415926 )/ 10000000 ;
$rand6 =  mt_rand ( 0 , 31415926 )/ 10000000 ;
$rand7 =  mt_rand ( 0 , 31415926 )/ 10000000 ;
$rand8 =  mt_rand ( 0 , 31415926 )/ 10000000 ;

// amplitudes
$rand9 =  mt_rand ( 330 , 420 )/ 110 ;
$rand10 =  mt_rand ( 330 , 450 )/ 110 ;

$center = $width /  2 ;

//wave distortion
 for ($x =  0 ; $x < $width; ++$x) {
     for ($y =  0 ; $y < $height; ++$y) {
        $sx = $x + ( sin ($x * $rand1 + $rand5) +  sin ($y * $rand3 + $rand6)) * $rand9 - $width /  2  + $center +  1 ;
	$sy = $y + ( sin ($x * $rand2 + $rand7) +  sin ($y * $rand4 + $rand8)) * $rand10;
	 if  ($sx <  0  || $sy <  0  || $sx >= $width -  1  || $sy >= $height -  1 ) {
             continue ;
	}
         else  {
            $color =  imagecolorat ($img, $sx, $sy) & 0xFF;
            $color_x =  imagecolorat ($img, $sx +  1 , $sy) & 0xFF;
            $color_y =  imagecolorat ($img, $sx, $sy +  1 ) & 0xFF;
            $color_xy =  imagecolorat ($img, $sx +  1 , $sy +  1 ) & 0xFF;
	}
	 if ($color ==  255  && $color_x ==  255  && $color_y ==  255  && $color_xy ==  255 ){
             continue ;
        } 
         else   if ($color ==  0  && $color_x ==  0  && $color_y ==  0  && $color_xy ==  0 ) {
            $newred = $foreground_color[ 0 ];
            $newgreen = $foreground_color[ 1 ];
            $newblue = $foreground_color[ 2 ];
	}
         else  {
            $frsx = $sx -  floor ($sx);
	    $frsy = $sy -  floor ($sy);
	    $frsx1 =  1  - $frsx;
	    $frsy1 =  1  - $frsy;
	    $newcolor = $color * $frsx1 * $frsy1 + $color_x * $frsx * $frsy1 + $color_y * $frsx1 * $frsy + $color_xy * $frsx * $frsy;
             if ($newcolor >  255 ) {
                $newcolor =  255 ;
            }
	    $newcolor = $newcolor /  255 ;
	    $newcolor0 =  1  - $newcolor;
	    $newred = $newcolor0 * $foreground_color[ 0 ] + $newcolor * $background_color[ 0 ];
	    $newgreen = $newcolor0 * $foreground_color[ 1 ] + $newcolor * $background_color[ 1 ];
	    $newblue = $newcolor0 * $foreground_color[ 2 ] + $newcolor * $background_color[ 2 ];
	}
	 imagesetpixel ($img2, $x, $y,  imagecolorallocate ($img2, $newred, $newgreen, $newblue));
    }
}

 header ("Expires: Wed, 1 Jan 1997 00:00:00 GMT");
 header ("Last-Modified: " .  gmdate ("D, d M Y H:i:s") . " GMT");
 header ("Cache-Control: no-store, no-cache, must-revalidate");
 header ("Cache-Control: post-check=0, pre-check=0",  false );
 header ("Pragma: no-cache");
 header  ("Content-type: image/png");
 imagepng ($img2);
 imagedestroy ($img2);
        
?>

ну и что за херня? опять всё черное! короче ясно, автор тех сраных строчек му**к и маг-чернокнижник
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
php captcha wave effect
    #38826524
Artexoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если кому интересно еще я эту функцию докрутил за 5 минут буквально могу выложить )
...
Рейтинг: 0 / 0
php captcha wave effect
    #38826899
phpz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ArtexoidЕсли кому интересно еще я эту функцию докрутил за 5 минут буквально могу выложить )
Нее, выскочки они совсем не интересны.
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / php captcha wave effect
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]