php源码之生成图片验证码的实例
实现验证码的基础GDI+graphics device interface plus的缩写,即图形设备接口。GDI+为开发者提供了一组实现与各种设备(具有图形化能力但不涉及图形细节的设备)进行交互的库函数。C#通过Bitmap类创建位图对象、Grephics类创建画板对象,再通过Pen类、Brush类、Color类等画位图: Point结构在二维平面中 定义点坐标的有序对。常用于定义 窗体或控件位置、其他图形(线条/矩形等)边界。 创建:Point p = new Point(30,90); IsEmpty属性检测Point结构是否为空。 Size结构存储有序整数对。常用于定义 窗体、空间呵其他矩形区域的大小。第一个构造函数接受一个Point结构: Point p = new Point(30,90); Size s = new Size(p); 第二个构造函数接受二个int值: Size s = new Size(30,90); 主要属性:Whdtn、hight、isEmpty Rectangle结构存储四个整数(表矩形位置和大小)。由一个定义左上角的Point结构 和 一个定义大小的Size结构 组成。 主要属性:Location 左上角坐标、Size 矩形大小、Height/Width 矩形高宽、Left/Right左右边x坐标、Top/Bottom 上下边y坐标、isEmpty 实现验证码主要语法:位图对象Bitmap bmp = new Bitmap(120,32); 画板对象Graphics gp = Graphics.FromImage(bmp); 画板背景色gp.Clear(Color.Silver); 默认为black 起点对象Point p1 = new Point(0,4); 画笔对象Pen p = new Pen(Color.Red); 画刷颜色Brush s = Brushes.Red; 文字对象string code = ""; 文字保存到会话中Session["checkcode"] = code; 画板绘制文字gp.DrawString(code,new Font("楷体",14),s,p1);(内容,字体,颜色,起点坐标) 位图输出到页面bmp.Save(Response.OutputStream,ImageFormat.Gif); php图片验证码的实现/** * vCode(m,n,x,y) m个数字 显示大小为n 边宽x 边高y * 自己改写记录session $code */ session_start(); vCode(4,15); //4个数字,显示大小为15 function vCode($num = 4,$size = 20,$width = 0,$height = 0) { !$width && $width = $num * $size * 4 / 5 + 5; !$height && $height = $size + 10; // 去掉了 0 1 O l 等 $str = "23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVW"; $code = ''; for ($i = 0; $i < $num; $i++) { $code .= $str[mt_rand(0,strlen($str)-1)]; } // 画图像 $im = imagecreatetruecolor($width,$height); // 定义要用到的颜色 /* http://www.manongjc.com */ $back_color = imagecolorallocate($im,235,236,237); $boer_color = imagecolorallocate($im,118,151,199); $text_color = imagecolorallocate($im,mt_rand(0,200),120),120)); // 画背景 imagefilledrectangle($im,$width,$height,$back_color); // 画边框 imagerectangle($im,$width-1,$height-1,$boer_color); // 画干扰线 for($i = 0;$i < 5;$i++) { $font_color = imagecolorallocate($im,255),255)); imagearc($im,mt_rand(- $width,$width),mt_rand(- $height,$height),mt_rand(30,$width * 2),mt_rand(20,$height * 2),360),$font_color); } // 画干扰点 for($i = 0;$i < 50;$i++) { $font_color = imagecolorallocate($im,255)); imagesetpixel($im,$font_color); } // 画验证码 @imagefttext($im,$size,5,$size + 3,$text_color,'c:WINDOWSFontssimsun.ttc',$code); $_SESSION["VerifyCode"]=$code; header("Cache-Control: max-age=1,s-maxage=1,no-cache,must-revalidate"); header("Content-type: image/png;charset=gb2312"); imagepng($im); imagedestroy($im); } ?> (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |