文章来源:http://www.cnblogs.com/hello-tl/p/7592998.html

<?php
/*** __construct($new);构造函数创建一张图片$new->width['宽']->height['高']->r[r]->b[b]->g[g]* 添加数字 digital($digital); $digital->length['位数'] -> size['数字大小']* 添加字符串 font($font,$data) $font->length['位数'] -> size['数字大小']   $data需要的字符串不能是中文* 给验证码添加干扰元素 点 point($lenth) $lenth 多少个* 添加干扰元素 线 line($lenth) $lenth 多少个* function __destruct() 析构函数保存 session 打印图片 销毁图片*/
class TL_Captcha{private $image; //验证码图片private $width; //验证码宽度private $height; //验证码高度private $captch_code; //验证码信息/*** [__construct description] 构造函数创建一张图片* @param [type] $new [description] 图片大小 以及背景颜色 数组形式*/public function __construct($new){session_start();$this->width = $new['width'];$this->height = $new['height'];//创建一张 宽$new['width'],高$new['height']的图片 [默认黑色]$this->image = imagecreatetruecolor($this->width, $this->height);//设置图片的底图 颜色为 r$new['r'],b$new['b'],g$new['g']$bgcolor = imagecolorallocate($this->image, $new['r'], $new['b'], $new['g']);//修改图片的底色imagefill($this->image,0,0,$bgcolor);}/*** 添加数字* @param  [type] $digital [description] $digital数字配置 $digital['length'] 数字长度 $digital['size'] 数字大小* @return [type]          [description]*/public function digital($digital){for($i=0;$i<$digital['length'];$i++){//设置数字字体大小$fontsize = $digital['size'];//设置数字颜色$fontcolor = imagecolorallocate($this->image, rand(0,120), rand(0,120), rand(0,120));//设置数字的值$fontcontent = rand(0,9);//作用 保存 session$this->captch_code = $this->captch_code.$fontcontent;//设置放入图片的x轴$x = ($i*$this->width/$digital['length']) + rand(5,10);//设置放入图片的y轴$y = rand(5,10);//把数字放入图片imagestring($this->image, $fontsize, $x, $y, $fontcontent, $fontcolor);}}/*** 添加字符串* @param  [type] $strings [description] $font数字配置 $strings['length'] 数字长度 $strings['size'] 数字大小* @param  [type] $data [description] 字符串 不能有文字* @return [type]       [description]*/public function strings($strings,$data){for($i=0;$i<$strings['length'];$i++){//设置数字字体大小$fontsize = $strings['size'];//设置数字颜色$fontcolor = imagecolorallocate($this->image, rand(0,120), rand(0,120), rand(0,120));//截取字符串设置默认字符$fontcontent = substr($data, rand(0,strlen($data)),1);//作用 保存 session$this->captch_code = $this->captch_code.$fontcontent;//设置放入图片的x轴$x = ($i*$this->width/$strings['length']) + rand(5,10);//设置放入图片的y轴$y = rand(5,10);//把文字放入图片imagestring($this->image, $fontsize, $x, $y, $fontcontent, $fontcolor);}return $this->captch_code;}/*** 中文验证码* @param  [type] $fontface [description] 文字路径* @param  [type] $strdb    [description] 随机的中文字符串* @param  [type] $length   [description] 验证码长度* @param  [type] $size     [description] 字体大小* @return [type]           [description]*/public function text($fontface,$strdb,$length,$size){//转换数组$strdbs = str_split($strdb,3);for($i=0;$i<$length;$i++){//设置文字颜色$fontcolor = imagecolorallocate($this->image, rand(0,120), rand(0,120), rand(0,120));//获取随机数组中的数字$cn = $strdbs[rand(0,count($strdbs)-1)];//写入session$this->captch_code = $this->captch_code.$cn;$x = (($i*$this->width/$length))+rand(5,10);$y = rand(30,35);imagettftext($this->image, $size, mt_rand(-60,60), $x, $y, $fontcolor, $fontface, $cn);}}/*** 给验证码添加干扰元素 点* @param  [type] $lenth [description] 添加点的数量* @return [type]        [description]*/public function point($lenth){for($i=0;$i<$lenth;$i++){//设置点的颜色$pointcolor = imagecolorallocate($this->image, rand(50,200), rand(50,200), rand(50,200));//放入验证码imagesetpixel($this->image, rand(1,$this->width), rand(1,$this->height), $pointcolor);}}/*** 添加干扰元素 线* @param  [type] $lenth [description] 添加点的数量* @return [type]        [description]*/public function line($lenth){for($i=0;$i<$lenth;$i++){//设置线的颜色$linecolor = imagecolorallocate($this->image, rand(80,220), rand(80,220), rand(80,220));//放入验证码imageline($this->image,rand(1,$this->width),rand(1,$this->height),rand(1,$this->width),rand(1,$this->height),$linecolor);}}/*** 构造函数打印图片并且销毁*/public function __destruct() {header('content-type:image/png');//创建SESSION$_SESSION['authcode'] = $this->captch_code;//打印图片imagepng($this->image);//销毁图片imagedestroy($this->image);}
}
$new = array('width' => 200,'height' => 50,'r' => 255,'b' => 255,'g' => 255
);
$Captcha = new Captcha($new);
//随机数字
// $digital = array(
//  'length' => 5,
//  'size' => 6,
// );
// $Captcha->digital($digital);
//
//随机字符串 不能有中文
// $strings = array(
//  'length' => 5,
//  'size' => 6,
// );
// $data = "qweqwewqewqeewqe1545616545446";
// $Captcha->strings($strings,$data);
//随机文字验证吗
//字体文件
// $fontface = "STXINGKA.TTF";
// $strdb = '晨起微风吹拂迎着第一缕朝阳绽放的方向踩着清凉的露珠沐着微醉的晨风静静漫行在清爽舒适的田野上欣喜盈怀云很轻风很静万物生灵大多还沉浸在黎明前的宁静里酣睡只有几只晨起的粉蝶在花中轻舞寂静的清晨给人一种恬淡安然温润祥和的柔美韵致令人陶醉其中流恋忘返沿着那条潺潺流动的小溪蜿蜒而下聆听溪水欢快地吟唱心变得无比的愉悦慢行几步稍加留意就能看到小鱼们在浅水里欢乐地舞蹈顽皮的小虾们在溪边的水草丛里追逐嬉戏若是你够幸运的话兴许还能撞上小乌龟在堤脚下的缝隙间探出半个头来欣喜地打量着这个神奇的世界呢然而这静好的一切随着一群大白鹅和一群小花鸭的介入而结束在鹅与鸭的叫声响起的一刹那小鱼小虾们早已屏声静气地藏匿好了身影那胆小怕事的小乌龟更是吓得立马缩回那才稍稍探出小半截的头颅瞬间整条小溪便盈满了鹅与鸭的嘹亮歌声';
// $length = "5";
// $Captcha->text($fontface,$strdb,$length,"14");
//加干扰元素 点
// $Captcha->point('200');
//加干扰元素线
// $Captcha->line('5');

文章来源:http://www.cnblogs.com/hello-tl/p/7592998.html

转载于:https://www.cnblogs.com/hello-tl/p/7592998.html

PHP:GD库 生成验证码图片相关推荐

  1. PHP生产一个验证码图片,PHP使用GD库生成验证码图片,实现图片验证

    本文记录从php 下载配置GD图片生成库 到使用该库生成验证码图片,网页上实现验证码. 使用技术: php使用GD库绘图 [php版本7.3] php session 缓存 实现最终效果: 一. 配置 ...

  2. Web前端技巧分享:教你用GD库生成验证码

    验证码相信大家都不会陌生,在网站登录的时候经常会遇到.那么你知道这个验证码是如何实现的吗?下面小千就为大家介绍一下这个GD库,还有一些常见的图片水印也是用GD实现的哦! GD库是什么? GD库是php ...

  3. PHP 使用GD库生成验证码 在图像上绘制汉字

    PHP 并不仅限于创建 HTML 输出, 它也可以创建和处理包括 GIF, PNG, JPEG, WBMP 以及 XPM 在内的多种格式的图像. 更加方便的是,PHP 可以直接将图像数据流输出到浏览器 ...

  4. PIL应用之生成验证码图片

    PIL应用之生成验证码图片 - 残阳似血的博客 PIL应用之生成验证码图片 位于分类 我爱Python 现在的网页中,为了防止机器人提交表单,图片验证码是很常见的应对手段之一.这里就不详细介绍了,相信 ...

  5. php gd库 函数 建立gif,PHP_PHP GD库生成图像的几个函数总结,使用GD库中提供的函数动态绘 - phpStudy...

    PHP GD库生成图像的几个函数总结 使用GD库中提供的函数动态绘制完成图像以后,就需要输出到浏览器或者将图像保存起来.在PHP中,可以将动态绘制完成的画布,直接生成GIF.JPEG.PNG和WBMP ...

  6. Python使用Pillow(PIL)库实现验证码图片

    Python使用Pillow(PIL)库实现验证码图片 Pillow库有很多用途,本文使用Pillow来生成随机的验证码图片. Pillow的用法参考:https://blog.csdn.net/we ...

  7. php的验证码要gd库,PHP通过GD库实现验证码功能

    本文实例讲述了PHP通过GD库实现验证码功能,结合实例形式分析了php验证码相关图片绘制.输出操作实现技巧.分享给大家供大家参考,具体如下: 首先看看实现的效果: 具体实现: /*PHP实现验证码*/ ...

  8. php gd库 圆形头像,基于 GD 库生成圆形头像

    基于 GD 库生成圆形头像 laravel 友好的图片处理库 Intervention Image 可以绘制圆形(circle()), 但是好像并不能将即存的图片裁剪成圆形, 这里提供一个基于 GD ...

  9. 转: 通过Servlet生成验证码图片

    孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(九)-- 通过Servlet生成验证码图片 一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedIma ...

最新文章

  1. Android 自定义View —— Path
  2. python 字符串 删除 空格 换行符
  3. python之if和while控制流
  4. Java各种数据类型详细介绍及其区别
  5. 帝国cms7.5电脑端手机端多终端解决方案之选择哪种方案
  6. mac安装mysql修改密码_Mac下安装MySQL 5.7.28并且修改root密码-Go语言中文社区
  7. OpenCV BLOB检测和过滤区域的实例(附完整代码)
  8. 白帽子讲web安全——访问控制
  9. [转载]谁来拯救云计算
  10. 每日算法系列【LeetCode 1031】两个非重叠子数组的最大和
  11. 磁盘阵列 RAID 技术原理详解
  12. 有效修改Tomcat6默认端口(ubuntu server,centos)
  13. React Native Button使用
  14. python做马尔科夫模型预测法_Python 3 爬虫学习笔记 8 马尔科夫模型
  15. PHP汉字转拼音(有声调、无声调、首字母、首字母大写)
  16. ABAQUS内核及GUI方法的代理接口
  17. chrome打不开plugins
  18. lc滤波器是利用电感的感抗_LC滤波器
  19. java 实现金额大小写转换
  20. python制作成绩分析系统_python实现学生成绩测评系统

热门文章

  1. 用日记本文档怎么写html,Win7系统如何使用日记本文档输入文字?
  2. Java设置短信间隔时间_Java实现短信验证码--设置发送间隔时间,以及有效时间(Java+Redis)...
  3. 基于Attention机制的BiLSTM语音情感识别研究与系统实现
  4. 忆享聚焦|软件营收76814亿、全球首款注射疫苗机器人面世……互联网一线资讯最新出炉
  5. 从炉石传说卡组推荐理解ASO搜索优化,aso搜索优化怎么用
  6. Java endorsed技术
  7. AI人工智能和ML语言的技术概述与未来趋势
  8. 20-4-4-如何限制用户往共享盘上传的文件格式呢?比如电影等不能上传
  9. 杂学Linux-IO篇
  10. Mysql的新增数据