Mesajlar: 1,838
Puanlar: 12,640
Konum: Istanbul
Thanks: 12 times
17 Mesajına Toplam 25 Kere Teşekkür Edildi.
|
Kod:</p> <p>class Captcha<br /> {<br /> protected $value;<br /> protected $image_name;<br /> <br /> public function __construct( $image_name )<br /> {<br /> $this->image_name = $image_name;<br /> }<br /> <br /> public static function createNumber( $length = 4 )<br /> {<br /> $num = "";<br /> for ( $i = 0; $i < $length; $i++ )<br /> {<br /> $r = mt_rand( 0, 9 );<br /> $num = $num.$r;<br /> }<br /> return $num;<br /> }<br /> <br /> public static function createString( $length = 4 )<br /> {<br /> $val = "";<br /> $values = "abcdefghijklmnopqrstuvwyz";<br /> for ( $i = 0; $i < $length; $i++ )<br /> {<br /> $r = mt_rand( 0, 24 );<br /> $val = $val.$values[$r];<br /> }<br /> return $val; <br /> }<br /> <br /> public function setValue( $value )<br /> {<br /> $this->value = $value;<br /> }<br /> <br /> public function getValue( )<br /> {<br /> return $this->value;<br /> }<br /> <br /> public function showImage( $channel = null )<br /> {<br /> $im = imageCreate( 160, 60 );<br /> $white = imagecolorallocate( $im, 255, 255, 255 );<br /> $black = imagecolorallocate( $im, 0, 0, 0 );<br /> <br /> $intensity = rand ( 200, 230 );<br /> <br /> if ( !$channel )<br /> {<br /> $channel = rand ( 1, 3 );<br /> }<br /> $ratio = rand ( 80, 100 );<br /> <br /> switch ( $channel )<br /> {<br /> case 1:<br /> $colorBgR = $intensity * $ratio / 100;<br /> $colorBgG = $intensity * ( 100 - $ratio ) / 100;<br /> $colorBgB = 0;<br /> <br /> for ( $i = 0; $i < 5; $i++ )<br /> {<br /> $shift = rand( 100 - ( $i+1)*3, 100 + ( $i+1)*3 );<br /> $new = $shift * $colorBgR / 100; <br /> <br /> $bgColors[] = iMagecolorallocate( $im, $new, $intensity-$new, 0 );<br /> }<br /> <br /> for ( $i = 0; $i < 3; $i++ )<br /> {<br /> $shift = rand( 100 - ( $i+1)*7, 100 + ( $i+1)*7 );<br /> $new = $shift * $colorBgR / 100; <br /> <br /> $bgColors[] = iMagecolorallocate( $im, $intensity-$new, $new, 0 );<br /> }<br /> break;<br /> <br /> case 2:<br /> $colorBgG = $intensity * $ratio / 100;<br /> $colorBgB = $intensity * ( 100 - $ratio ) / 100;<br /> $colorBgR = 0;<br /> <br /> for ( $i = 0; $i < 5; $i++ )<br /> {<br /> $shift = rand( 100 - ( $i+1)*3, 100 + ($i+1)*3 );<br /> $new = $shift * $colorBgR / 100; <br /> <br /> $bgColors[] = iMagecolorallocate( $im, 0, $new, $intensity-$new );<br /> }<br /> <br /> for ( $i = 0; $i < 3; $i++ )<br /> {<br /> $shift = rand( 100 - ( $i+1)*7, 100 + ( $i+1)*7 );<br /> $new = $shift * $colorBgR / 100; <br /> <br /> $bgColors[] = iMagecolorallocate( $im, 0 , $intensity-$new, $new );<br /> }<br /> <br /> case 3:<br /> $colorBgB = $intensity * $ratio / 100;<br /> $colorBgR = $intensity * ( 100 - $ratio ) / 100;<br /> $colorBgG = 0;<br /> <br /> for ( $i = 0; $i < 5; $i++ )<br /> {<br /> $shift = rand( 100 - ( $i+1)*3, 100 + ( $i+1)*3 );<br /> $new = $shift * $colorBgR / 100; <br /> <br /> $bgColors[] = iMagecolorallocate( $im, $intensity-$new, 0, $new );<br /> }<br /> <br /> for ( $i = 0; $i < 3; $i++ )<br /> {<br /> // to make it harder do symmetric range ^^ <br /> $shift = rand( 100 , 100 + ( $i+1)*20 );<br /> $new = $shift * $colorBgR / 100; <br /> <br /> $bgColors[] = iMagecolorallocate( $im, $new , 0, $intensity-$new );<br /> }<br /> break;<br /> }<br /> <br /> <br /> <br /> <br /> $bgColor = imagecolorallocate( $im, $colorBgR, $colorBgG, $colorBgB );<br /> <br /> <br /> for ( $i = 0; $i < strlen( $this->value ); $i++ )<br /> {<br /> $rotate = rand(-15, 15);<br /> <br /> $fontSize = rand(28, 36);<br /> imagettftext($im, $fontSize ,$rotate , 10+$i*31, 50, $black, "impact.ttf",$this->value[$i] ); <br /> }<br /> <br /> <br /> <br /> <br /> for ( $i = 0; $i < 160; $i++ )<br /> {<br /> for ( $j = 0; $j < 60; $j++ )<br /> {<br /> $pos = rand( 0, 7 );<br /> <br /> if ( imagecolorat( $im, $i, $j ) == $black )<br /> {<br /> $pos = rand( 6, 7 );<br /> <br /> <br /> <br /> imagesetpixel( $im, $i, $j, $bgColors[$pos] );<br /> }<br /> else<br /> {<br /> imagesetpixel( $im, $i, $j, $bgColors[$pos] );<br /> }<br /> }<br /> }<br /> <br /> imagejpeg( $im, "images/".$this->image_name.".jpg" );<br /> imagedestroy( $im );<br /> echo" <img src='/images/".$this->image_name.".jpg' style='border: 1px solid #000;' width='160' >";<br /> }<br /> }</p> <p>
|