-
-
//파일 헤더... - header("콘텐츠 유형: 이미지/png" );
- //트루 컬러 백서 생성
- $im = @imagecreatetruecolor(50, 20) or die("이미지 생성 실패")
- //배경색 가져오기
- $ background_color = imagecolorallocate ($im, 255, 255, 255);
- //배경색 채우기 (이건 석유통과 비슷합니다)
- imagefill($im,0,0,$Background_color); > //테두리 색상 가져오기
- $border_color = imagecolorallocate($im,200,200,200)
- //사각형 그리기, 테두리 색상 200,200,200
- imageRectangle($im,0,0,49,19,$ border_color);
// 배경을 한 줄씩 표시합니다. 전체 화면에는 1 또는 0을 사용합니다.
- for($i=2;$i<18;$i ) {
- //임의의 조명 색상 가져오기
- $ line_color = imagecolorallocate($im,rand(200,255),rand(200,255),rand(200,255))
- //선 그리기
- imageline( $im,2,$i,47,$i,$line_color );
- }
//글꼴 크기 설정
- $font_size=12; p>
//인쇄된 텍스트 설정 < > ; //첫 번째 무작위 텍스트 가져오기 - $imstr[0]["s"] = $Str[rand(0,2)] [rand(0,25)];
- $imstr[0] ["x"] = rand(2,5)
- $imstr[0]["y"] = rand(1,4) ;
//처음 2개의 무작위 텍스트 가져오기
- $imstr[1]["s"] = $Str[rand(0,2)][rand(0, 25)];
- $imstr[1]["x"] = $imstr[0]["x"] $font_size-1 rand(0,1)
- $imstr[1]["y "] = rand(1,3);
//세 번째 무작위 텍스트 가져오기
- $imstr[2]["s"] = $Str[rand(0, 2)][rand(0,25)];
- $ imstr[2]["x"] = $imstr[1]["x"] $font_size-1 rand(0,1); $imstr[2]["y"] = rand(1,4 );
//네 번째 무작위 텍스트 가져오기
- $imstr[3]["s"] = $Str[rand(0,2)][rand(0,25)]
- $imstr[3]["x"] = $imstr[2]["x"] $font_size-1 rand( 0,1);
- $imstr[3][" y"] = rand(1,3);
//임의의 문자열 쓰기
- for($i =0;$i<4;$i ){
- //더 어두운 색상을 무작위로 가져옵니다
- $text_color = imagecolorallocate($im,rand(50,180),rand(50,180),rand(50,180)); 🎜> //텍스트 그리기
- imagechar($im ,$font_size,$imstr[$i]["x"],$imstr[$i]["y"],$imstr[$i]["s "],$text_color);
- }< /p>
//이미지 표시
- imagepng($im);
- //이미지 삭제
- imagedestroy($im );
- ?>
-
-
-
- 코드 복사
-
-
예제 2, 아름다운 PHP 이미지 인증코드 예시
전체 코드:
-
- /*
- * @Author fy
- */
- $imgwidth =100; //이미지 너비
- $imgheight = 40; //사진 높이
- $codelen =4; //인증 코드 길이
- $fontsize =20; //글꼴 크기
- $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';
- $font = segoesc.ttf';
- $im=imagecreatetruecolor($imgwidth,$imgheight);
- $while=imageColorAllocate($im,255,255,255);
- imagefill($im,0,0,$while); //이미지 채우기
- //문자열 가져오기
- $authstr='';
- $_len = strlen($charset)-1;
- for ($i=0;$i<$ codelen ;$i ) {
- $authstr .= $charset[mt_rand(0,$_len)];
- }
- session_start();
- $_SESSION['scode']=strtolower($ authstr );//대소문자 구분을 피하기 위해 모두 소문자로 변환
- //별표로 변경된 임의의 점을 그립니다
- for ($i=0;$i<$imgwidth;$i ) {
- $randcolor=imageColorallocate($im,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
- imagestring($im,mt_rand(1,5), mt_rand(0,$imgwidth) , mt_rand(0,$imgheight), '*',$randcolor);
- //imagesetpixel($im,mt_rand(0,$imgwidth),mt_rand(0,$imgheight),$randcolor);
- }
- //무작위로 줄을 그립니다. 줄 수 = 문자 수(무엇이든)
- for($i=0;$i<$codelen;$i)
- {
- $randcolor= imagecolorallocate($ im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
- imageline($im,0,mt_rand(0,$imgheight),$imgwidth,mt_rand(0,$imgheight), $randcolor) ;
- }
- $_x=intval($imgwidth/$codelen); //문자 거리 계산
- $_y=intval($imgheight*0.7); //문자가 70%로 표시됩니다. 이미지
- for($i=0;$i $randcolor=imagecolorallocate($im,mt_rand(0,150),mt_rand(0,150),mt_rand(0,150 ));
- //imagestring($im,5,$j,5,$imgstr[$i],$color3);
- // imagettftext ( 리소스 $image , float $size , float $angle , int $x , int $y , int $color , 문자열 $fontfile , 문자열 $text )
- imagettftext($im,$fontsize,mt_rand(-30,30),$i*$_x 3,$_y,$ randcolor,$font ,$authstr[$i]);
- }
- //이미지 생성
- header("content-type:image/PNG");
- imagePNG($im);
- imageDestroy( $im);
코드 복사 예시3, php5 이미지 인증코드 예시코드
php5에서 이미지 인증코드를 생성하는 예시입니다.
php GD 라이브러리 기능을 사용해야 합니다:
1,imagecreatetruecolor------트루 컬러 이미지 만들기
imagecreatetruecolor(int x_size,int y_size) //x는 너비를 나타내고 y는 높이를 나타냅니다.
2. imagecolorallocate는 이미지에 색상(팔레트)을 할당합니다.
imagecolorallocate(리소스 이미지,int red,int green,int blue)//red,green,blue----세 가지 기본 색상
3. 이미지 스트링 그리기 기능
iamgestring(리소스 이미지, 글꼴, int x, int y, 내용, 색상);
4. 출력 기능
PHP의 헤더는 헤더를 정의하는 액션입니다. PHP5는 3가지 유형을 지원합니다.
1,컨텐츠 유형: xxxx/yyyy
2,위치:xxxx:yyyy/zzzz
3, 상태: nnn xxxxxx
xxxx/yyyy는 콘텐츠 파일의 유형을 나타냅니다.
예: 이미지/gif
이미지/jpeg
이미지/png
예: header("콘텐츠 유형:이미지/jpeg")
GD 라이브러리에는 해당 이미지 유형이 있습니다.
imagejpeg(),imagegif(),imagepang()
5.이미지라인 선 그리기 기능
iamgeline(리소스 이미지,int x1,int y1,int x2,int y2,int color);
이미지 ---그림
x1 ---시작 좌표
y1
x2 ---끝점 좌표
y2
6.imagesetpixel 그리기 포인트 기능
imagesetpixel(리소스 이미지,int x,int y,int color)
7.글꼴을 이용한 이미지ttf텍스트 작성 기능
imagettftext(리소스 이미지, 부동 크기, 부동 각도, int x, int y, int 색상, 문자열 글꼴 파일, 문자열 텍스트)
8. 중국어 PHP 인증코드 삽입 방법
iconv("gb2312","utf-8","string"); //먼저 텍스트를 utf-8 형식으로 변환합니다.
9. 랜덤 기능
1, rand([int min,int max]) //rand(1,4)는 1부터 4까지의 숫자를 생성합니다.
2, decex(10진수) //16진수로 변환
인증 코드 생성 단계:
난수 생성 - 그림 만들기 - 그림에 임의의 숫자 쓰기 - 세션에 저장
인증코드 입력 예
gdchek.php
- /*
- * 이미지 인증 코드를 생성
- *하고 편집기에서 템플릿을 엽니다
- . */
- session_start();
- for($i=0;$i<4;$i ){
- $rand.=dechex(rand(1,15)) //4자리 생성 숫자에 16진수 난수가 포함되어 있습니다
- }
- $_SESSION[check_gd]=$rand;
- $img=imagecreatetruecolor(100,30); //이미지 생성
- $bg=imagecolorallocate( $ img,0,0,0); //1세대는 배경색입니다
- $fc=imagecolorallocate($img,255,255,255); //생성된 글꼴 색상
- //그림에 선을 그립니다.
- for($i=0;$i<3;$i ){
- $te=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255))
- imageline( $ img,rand(0,15),0,100,30,$te);
- }
- //그림에 점을 그립니다
- for($i=0;$i<200;$i ){
- $te=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255))
- imagesetpixel($img,rand() 0,rand()0,$te); 🎜>}
- //먼저 텍스트를 utf-8 형식으로 변환
- //$str=iconv("gb2312","utf-8","Hehehe")
- // 중국어 확인 추가
- //smkai.ttf는 다른 사람의 컴퓨터에서도 글꼴로 작동하려면 해당 파일을 프로젝트의 루트 디렉터리에 넣어야 하며, C에서도 찾을 수 있습니다. :WINDOWSFonts가 이 컴퓨터에 있습니다.
- imagettftext($img,11,10,20,20,$fc,"simkai.ttf","Hello Hello")//이미지에 문자열을 씁니다.
- / /imagestring($img,rand(1,6),rand(3,70),rand(3,16),$rand,$fc)
- //출력 이미지
- 헤더( "콘텐츠 유형:image/jpeg")
- imagejpeg($img);
- ?>
-
-
코드 복사
login.php
/* - *
- *
- */
- session_start()
- if($_POST[sub]){
- //인증 코드가 동일한지 확인
- if($_POST[gd_pic]==$_SESSION[check_gd]){
- echo "인증 성공!" ;
- }else{
- echo "인증 코드 오류"
- }
- }
- ?>
-
-
- 코드 복사
|