Home >Backend Development >PHP Tutorial >PHP generates a distorted and angular image verification code function that supports Chinese_PHP tutorial

PHP generates a distorted and angular image verification code function that supports Chinese_PHP tutorial

WBOY
WBOYOriginal
2016-07-20 11:06:54736browse

PHP generates a twisted and angled image verification code function that supports Chinese

function make_rand($length="32"){//Verification code text generation function
$ str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
$result="";
for($i=0;$i<$length;$i++){
$num[$i]=rand(0,61 );
$result.=$str[$num[$i]];
}
return $result;
}
$checkcode = make_rand(5);
$ im_x=160;
$im_y=32;
function make_crand($length="5") {
$string = '';
for($i=0;$i<$length ;$i++) {
$string .= chr(rand(0xB0,0xF7)).chr(rand(0xA1,0xFE));
}
return $string;
}
function getAuthImage($text , $im_x = 230 , $im_y = 32) {
$im = imagecreatetruecolor($im_x,$im_y);
$text_c = ImageColorAllocate($im, mt_rand(0,100),mt_rand( 0,100),mt_rand(0,100));
$tmpC0=mt_rand(100,255);
$tmpC1=mt_rand(100,255);
$tmpC2=mt_rand(100,255);
$buttum_c = ImageColorAllocate( $im,$tmpC0,$tmpC1,$tmpC2);
imagefill($im, 16, 13, $buttum_c);
//echo $text;
$font = 'c:WINDOWSFontssimsun.ttc ';
//echo strlen($text);

$text=iconv("gb2312","UTF-8",$text);
//echo mb_strlen($text, "UTF-8");
for ($i=0;$i{
$tmp =mb_substr($text,$i,1," UTF-8");
$array = array(-1,0,1);
$p = array_rand($array);
$an = $array[$p]*mt_rand(1 ,9);//Angle
$size = 20;
imagettftext($im,$size,$an,10+$i*$size*2,25,$text_c,$font,$tmp) ;
}

$distortion_im = imagecreatetruecolor ($im_x, $im_y);
imagefill($distortion_im, 16, 13, $buttum_c);
for ( $i=0; $ i<$im_x; $i++) {
for ( $j=0; $j<$im_y; $j++) {
$rgb = imagecolorat($im, $i , $j);
if( (int)($i+20+sin($j/$im_y*2*M_PI)*10) <= imagesx($distortion_im) && (int)($i+20+sin($j/$ im_y*2*M_PI)*10) >=0 ) {
imagesetpixel ($distortion_im, (int)($i+10+sin($j/$im_y*2*M_PI-M_PI*0.5)*3 ), $j, $rgb);
}
}
}
//Add interference pixels;
$count = 600;//The number of interference pixels
for( $i=0; $i<$count; $i++){
$randcolor = ImageColorallocate($distortion_im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imagesetpixel($distortion_im, mt_rand()%$im_x , mt_rand()%$im_y , $randcolor);
}

$line_c=5;
//imageline
for($i=0; $ i < $line_c; $i++) {
$linecolor = imagecolorallocate($distortion_im, 17, 158, 20);
$lefty = mt_rand(1, $im_x-1);
$righty = mt_rand(1, $im_y-1);
imageline($distortion_im, 0, $lefty, imagesx($distortion_im), $righty, $linecolor);
}

Header("Content -type: image/PNG");

//Output the image to the browser or file in PNG format;
//ImagePNG($im);
ImagePNG($distortion_im);

//Destroy an image and release the memory associated with the image;
ImageDestroy($distortion_im);
ImageDestroy($im);
}

getAuthImage(make_crand( 5));

?>


www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/444995.htmlTechArticlePHP generates a twisted and angled image verification code function that supports Chinese?php function make_rand($length=32){/ /Verification code text generation function $str=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn