PHP网站建设开发用的图形验证码源码下载 By admin 2009/7/11 8:58:00 最近经常有人问我这个Blog中的图形验证码是如何做的.下面是这个PHP图形验证码的源程序. 欢迎指正. 样式: class.image.php /*=========================================================== class.image.php Zhu Weiwei Copyright © 2006-2008 http://www.jzxue.com China. All Rights Reserved. ===========================================================*/class Image{ private $img; private $width; private $height; private $color; private $font; private $mime="image/jpeg"; /* 1,GIF 2,JPEG 3,PNG */ private $type=2; private $angle=0; private $text; private $textW; private $textH; private $size=5; private $tcolor; function __construct($w="100", $h="50"){ $this->width=$w; $this->height=$h; } function create() { if ($this->type != 1 && function_exists('imagecreatetruecolor')) { // 本函数不能用于 GIF 文件格式 // 本函数需要 GD 2.0.1 或更高版本。 // 返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的黑色图像 $this->img=imagecreatetruecolor($this->width,$this->height); }else { $this->img=imagecreate($this->width,$this->height); } } /* * 1=GIF 2=JPG * 3=PNG */ function createFromFile($f){ $imgInfo=getimagesize($f); $this->type=$imgInfo[2]; switch($this->type){ case 1: $this->loadGifFile($f); break; case 2: $this->loadJpegFile($f); break; case 3: $this->loadPngFile($f); break; default: die("This Image Type Not Support loadimage !"); exit(); } } function loadGifFile($f){ // 1.6 -- 2.0.28 //二者之间版本的 GD 库时本函数不可用 $this->img=imagecreatefromgif($f ) or die("Load Gif picture error!") ; $this->width=imagesx($this->img); $this->height=imagesy($this->img); $this->mime="image/gif"; $this->type=1; } function loadJpegFile($f){ //JPEG 支持仅在 PHP 与 GD-1.8 或更高版本一起编译时可用 $this->img=imagecreatefromjpeg($f) or die("Load Jpeg picture error!") ; $this->width=imagesx($this->img); $this->height=imagesy($this->img); $this->mime="image/jpeg"; $this->type=2; } function loadPngFile($f){ $this->img=imagecreatefrompng($f ) or die("Load Png picture error!") ; $this->width=imagesx($this->img); $this->height=imagesy($this->img); $this->mime="image/png"; $this->type=3; } function setBackgroundColor($r, $g, $b){ ## 用color 颜色填充了的矩形 ## 其左上角坐标为 x1,y1 ## 右下角坐标为 x2,y2 ## 0, 0 是图像的最左上角 $color =imagecolorallocate($this->img, $r, $g, $b); return imagefilledrectangle($this->img, 0, 0, $this->width, $this->height, $color); } function setColor($r, $g, $b){ $this->color=imagecolorallocate($this->img, $r, $g, $b); return (-1 == $this->color) ? (false) : ($this->color); } function setTextColor($r, $g, $b){ $this->tcolor=imagecolorallocate($this->img, $r, $g, $b); return (-1 == $this->tcolor) ? (false) : ($this->tcolor); } function setText($t){ $this->text=$t; } function waterMark($r, $g, $b, $alpha){ $this->tcolor=imagecolorclosestalpha($this->img, $r, $g, $b, $alpha); } function setFontFile($f){ $this->font=$f; } function addTrueTypeText($xoffset,$yoffset){ #$x=( ( $this->width - $this->textW - 10) > 0) ? ($this->width - $this->textW - 10) : (0) ; #$y=( ( $this->height-10) > 0) ? ($this->height-10) : ($this->height); // 用 TrueType 字体向图像写入文本 // **x,y 坐标是字符串左下角坐标,整幅图像的左上角为 0,0 imagettftext($this->img, $this->size, $this->angle, $xoffset, $yoffset, $this->tcolor, $this->font, $this->text); } function addText() { // http://www.devdao.com/ 用 color 颜色将字符串 s 画到 image // **x,y 坐标是字符串左上角坐标,整幅图像的左上角为 0,0 // 如果font 是 1,2,3,4 或 5,则使用内置字体。 imagestring ($this->img, $font, $x, $y, $this->text, $this->tcolor); } function setSize($s){ $this->size=$s; } function setAngle($a){ $this->angle=$a; } function setWidth($w){ $this->width=$w; } function setHeight($h){ $this->height=$h; } function getWidth(){ return $this->width; } function getHeight(){ return $this->height; } function setPixel($x,$y,$color){ return imagesetpixel($this->img, $x, $y, $color); } function setLine($x1,$y1,$x2,$y2,$color){ return imageline($this->img, $x1, $y1, $x2, $y2, $color); } function createImageFile($f="default"){ if( !empty($f) ){ switch($this->type){ case 1: imagegif($this->img, $f.".gif",80); break; case 2: imagejpeg($this->img, $f.".jpg" , 80); break; case 3: imagepng($this->img, $f.".png", 80); break; default: die("This Image Type Not Support create !"); exit(); } imagedestroy($this->img); } } function show(){ header("Content-type: ".$this->mime); switch($this->type){ case 1: imagegif($this->img); break; case 2: imagejpeg($this->img); break; case 3: imagepng($this->img); break; default: die("This Image Type Not Support show !"); exit(); } imagedestroy($this->img); } /* Zoom Out Picture */ function roomOut($maxW, $maxH){ $WW=(($maxW) and ($this->width > $maxW)); $HH=(($maxH) and ($this->height > $maxH)); if($WW or $HH){ if($WW){ $wRatio =$maxW / $this->width; $wResize=true; } if($HH){ $hRatio =$maxH / $this->height; $hResize=true; } if($wResize and $hResize){ if($wRatio < $hRatio){ $ratio=$wRatio; }else{ $ratio=$hRatio; } }elseif($wResize){ $ratio=$wRatio; }elseif($hResize){ $ratio=$hRatio; } }else{ $ratio=1; } $newWidth=$this->width * $ratio; $newHeight=$this->height * $ratio; if(function_exists("imagecopyresampled")){ $newimg=imagecreatetruecolor($newWidth, $newHeight); imagecopyresampled($newimg, $this->img, 0, 0, 0, 0, $newWidth, $newHeight, $this->width, $this->height); }else{ $newimg=imagecreate($newWidth, $newHeight); imagecopyresized($newimg, $this->img, 0, 0, 0, 0, $newWidth, $newHeight, $this->width, $this->height); } $this->img=$newimg; $this->width= $newWidth; $this->height=$newHeight; }}imgverifycode.php /*=========================================================== imgverifycode.php Zhu Weiwei Copyright © 2006-2008 http://www.jzxue.com China. All Rights Reserved. ===========================================================*/<?phprequire('class.image.php');# char number$n = 4;#font size$s = 18;#font padding$p = 5;#font angle -a,a$a = 15;#image width$w = ($s+$p)*$n+$p;#image height;$h = intval($s*1.5); $c = ($h + $s)/2;$o = abs($h-$s-2*$p)/2;$r = 1; $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';#$str = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz';#$str = '0123456789'; $len = strlen($str)-1;$code = ''; $im = new Image($w,$h);$im->create();$im->setBackgroundColor( mt_rand(0xdd,0xff), mt_rand(0xdd,0xff), mt_rand(0xdd,0xff) ); $im->setSize( $s ); for($i=$p; $i<$w-$p; $i=$i+$s+$p){ $char = $str{mt_rand(0,$len)}; $code = $code.$char; $im->setFontFile($CFG->dirroot.'/font/'.mt_rand(2,5).'.ttf'); $im->setText( $char ); $im->setAngle( mt_rand(-$a,$a) ); $im->setTextColor(mt_rand(0x0,0x66),mt_rand(0x0,0x66),mt_rand(0x0,0x66) ); $im->addTrueTypeText($i,mt_rand($c-$o,$c+$o)); for($j=0; $j<8*$r; $j++){ $xs = mt_rand($i-$s/2+$p,$i+$s/2-$p); $ys = mt_rand($p,$h-$p); $color = $im->setColor(mt_rand(0x0,0x66),mt_rand(0x0,0x66),mt_rand(0x0,0x66)); $im->setLine( $xs, $ys, $xs+mt_rand(-$s/2,$s/2), $ys+mt_rand(-$s/2,$s/2), $color); }} $SESS = new Session();$SESS->setParameter('verifycode',$code); for($i=0; $i<200*$r; $i++){ $color = $im->setColor(mt_rand(0x0,0x66),mt_rand(0x0,0x66),mt_rand(0x0,0x66)); $im->setPixel(mt_rand(0,$w), mt_rand(0,$h),$color);} $im->show(); 分享联系我们 扫二维码与项目经理沟通 我们在微信上24小时期待你的声音 感谢您的关注分享“PHP网站建设开发用的图形验证码源码下载” 烟寒网络真诚为您服务 ,点击客服直接咨询下单. 立即咨询 我们服务 网站建设 高端网站建设服务商、相信品牌力量、相信知名企业;制作后收费13014982176! 微信小程序/微信公众号 微信小程序 背靠10亿流量,不论用户需求是什么,都能被开发使用 一点创意,就能在“社交圈”中脱颖而出。 网站优化/SEO 让您的网站更靠近排名位置,让客户更容易找到您,seo优化是一个漫长过程,整个网站营销花最少的钱起最大的作用。 栏目分类 平面广告设计知识网站优化技术网站建站知识网站模板分享微信公众号开发小程序技术APP应用Python技术文章web开发 网站建设建设知识 平面设计师我们需要懂得印刷知识与尺寸规范开发一个小程序的成本是多少南宁小程序设计要注意的七大要点?响应式网站有哪些优点为什么要选择响应式网站建设风格小程序初次发布,审核需要多久呢?网站的未来 你觉得会不会被淘汰?南宁烟寒网络提供网站运营托管网站升级改版微信小程序开发流程的两种方法科普网站优化注意这8点让你网站排名上升什么是微信什么是服务号? 如何申请使用如何建设企业商城网站?商城网站建设之前要考虑到那些细...南宁网络公司教新手搭建网站的技巧 热点标签 网站建设 品牌设计 微信小程序 网站优化 平面广告设计知识 网站优化技术 网站建站知识 网站模板分享 微信公众号开发 小程序技术 APP应用