??? ????? ????
????? ??????
?? ??? ???? ??? ?? ?? ??? ????? ??? ???? ????. ?? ?? ??? ??? ?????(OCR ??). ???? ???? ?? ?? ??? ???? ??? ? ????. ???? ??? ?? ???? ?????. ?? ??? ??? ??? ??? ??? ? ????.
?? ?? ??:
??? ?? ????? ???? ??? ?? ??? ?? ?? ?? ????? ???? ???? ???? ?? ????? ?????. ??? ?? ?? ??? ????? ??? ????? ???? ?? ???? ??? ????? ??? ???? ?? ?????. ?? ?? ??????? ???? ??? ???? ???? ??, ??? ? ??? ??? ?? ???? ?? ?? ?? ??? ?????.
??? ??? ?? ????? ?? ??? ??? ?? ?? ?????. ??? ??? ??? ????? ??? ??? ????? ????? ? ??? ??? ??? ?? ??? ????.
png ??? ?? ??? ???? ?? ??? ??:
1. png ??? ??
2. ???? ??? ??
3. ?? ?? ? ??? ??
4. ???? ??
5. ??? ? ??? ?? ??? ??? ???? png ???? ????
6. ?? ??? ?? ???? ???? ?? ??? ????? ??? ? ???? ?????
7. 8. ???? ??? ???? ?????.
??? PHP ?? ?? ??? ????.
<?php //設(shè)置session,必須處于腳本最頂部 session_start(); $image = imagecreatetruecolor(100, 30); //1>設(shè)置驗證碼圖片大小的函數(shù) //5>設(shè)置驗證碼顏色 imagecolorallocate(int im, int red, int green, int blue); $bgcolor = imagecolorallocate($image,255,255,255); //#ffffff //6>區(qū)域填充 int imagefill(int im, int x, int y, int col) (x,y) 所在的區(qū)域著色,col 表示欲涂上的顏色 imagefill($image, 0, 0, $bgcolor); //10>設(shè)置變量 $captcha_code = ""; //7>生成隨機數(shù)字 for($i=0;$i<4;$i++){ //設(shè)置字體大小 $fontsize = 6; //設(shè)置字體顏色,隨機顏色 $fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120)); //0-120深顏色 //設(shè)置數(shù)字 $fontcontent = rand(0,9); //10>.=連續(xù)定義變量 $captcha_code .= $fontcontent; //設(shè)置坐標 $x = ($i*100/4)+rand(5,10); $y = rand(5,10); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); } //10>存到session $_SESSION['authcode'] = $captcha_code; //8>增加干擾元素,設(shè)置雪花點 for($i=0;$i<200;$i++){ //設(shè)置點的顏色,50-200顏色比數(shù)字淺,不干擾閱讀 $pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200)); //imagesetpixel — 畫一個單一像素 imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor); } //9>增加干擾元素,設(shè)置橫線 for($i=0;$i<4;$i++){ //設(shè)置線的顏色 $linecolor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220)); //設(shè)置線,兩點一線 imageline($image,rand(1,99), rand(1,29),rand(1,99), rand(1,29),$linecolor); } //2>設(shè)置頭部,image/png header('Content-Type: image/png'); //3>imagepng() 建立png圖形函數(shù) imagepng($image); //4>imagedestroy() 結(jié)束圖形函數(shù) 銷毀$image imagedestroy($image); ?>?? ?? ??? ???? ??? ??? ??? ?????.