php验证码函数 使用imagestring() imagefttext()设置字体大小

转载路径:http://hi.baidu.com/asdasd_cn/item/62977d1e26ca36e85e53b142


生成验证码图片的两个函数

第一个是用imagestring

  bool imagestring    ( resource $image   , int $font   , int $x   , int $y   , string $s   , int $col   )

  imagestring()col   颜色将字符串 s 画到 image   所代表的图像的 xy   坐标处(这是字符串左上角坐标,整幅图像的左上角为 0,0)。如果   font 是 1,2,3,4 或 5,则使用内置字体。  

public function captcha1() {//生成验证码图片Header("Content-type: image/PNG");$rand ="";for($i=0;$i<4;$i++){$rand.=dechex(rand(0,15));}$im = imagecreate(100,50); //制定图片背景大小$black = ImageColorAllocate($im, 0,0,0); //设定三种颜色$white = ImageColorAllocate($im, 255,255,255);$gray = ImageColorAllocate($im, 200,200,200);for($i=0;$i<3;$i++){$te=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));}imagefill($im,0,0,$gray); //采用区域填充法,设定(0,0)while(($rand=rand()%100000)<10000);//将四位整数验证码绘入图片$_SESSION['rand']=$rand;imagestring($im, 5, 30, 20, $rand, $te);// 用 col 颜色将字符串 s 画到 image 所代表的图像的 x,y 座标处(图像的左上角为 0, 0)。//如果 font 是 1,2,3,4 或 5,则使用内置字体for($i=0;$i<200;$i++) //加入干扰象素{$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));imagesetpixel($im, rand()%100 , rand()%50 , $randcolor);}imageline($im,0,rand(0,100),100,rand(0,15),$randcolor);imageline($im,0,rand(0,100),100,rand(0,15),$randcolor);imageline($im,0,rand(0,100),100,rand(0,15),$randcolor);ImagePNG($im);ImageDestroy($im);}

第二个函数可根据根据字体库设置大小Linux端的注意路径

imagefttext — 使用 FreeType 2 字体将文本写入图像

  array imagefttext    ( resource $image   , float $size   , float $angle   , int $x   , int $y   , int $color   , string $fontfile   , string $text   [, array $extrainfo  ] )

//可以修改字体大小的验证码function captcha2($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);   // 定义要用到的颜色   $back_color = imagecolorallocate($im, 235, 236, 237);   $boer_color = imagecolorallocate($im, 118, 151, 199);   $text_color = imagecolorallocate($im, mt_rand(0,200), mt_rand(0,120), mt_rand(0,120));   // 画背景   imagefilledrectangle($im,0,0,$width,$height,$back_color);   // 画边框   imagerectangle($im,0,0,$width-1,$height-1,$boer_color);   // 画干扰线   for($i=0;$i<5;$i++){   $font_color = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));   imagearc($im,mt_rand(-$width,$width),mt_rand(-$height,$height),mt_rand(30,$width*2),mt_rand(20,$height*2),mt_rand(0,360),mt_rand(0,360),$font_color);   }   // 画干扰点   for($i=0;$i<50;$i++){   $font_color = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));   imagesetpixel($im,mt_rand(0,$width),mt_rand(0,$height),$font_color);   }   // 画验证码   @imagefttext($im, $size , 0, 5, $size+3, $text_color, 'c://WINDOWS//Fonts//simsun.ttc',$code);   header("Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate");   header("Content-type: image/png");   imagepng($im);imagedestroy($im);}
附:

Linux-debian 字体默认路径:/usr/share/fonts/truetype/ttf-dejavu/

考虑到程序的可移植性,在程序目录中新建字体目录fonts来使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

提取地图中道路_非机器学习方法·从遥感影像中提取道路

本科低年级曾经做过一个提取道路线的题目。提供的数据&#xff1a;老师给我们了一幅学校周边地区的影像&#xff0c;包括RGBInfrared四个波段。一开始使用的方法&#xff1a;当时尚青涩的我和小伙伴们一起使用KMEANS、阈值分割等等方法试图将那道路从影像中分离出来。遇到的问题…

图片尺寸自适应

图片尺寸自适应 οnlοad"javascript:if(this.height>this.width){this.height100}else{this.width100} 转载于:https://www.cnblogs.com/TangZhongxin/archive/2009/12/14/3942483.html

第一章知识点

第一章知识点 一&#xff1a;SQL语言 1&#xff0c;结构化查询语言&#xff0c;是关系数据库的标准语言 2&#xff0c;分类&#xff1a; 2.1&#xff1a;数据操作语言&#xff1a;DML&#xff1b;包括&#xff1a;即增删查改&#xff1b;insert&#xff0c;update&#xff0c;d…

2021年,推荐这几个优质公众号碎片化学习

2021 年了&#xff0c;前端技术日新月异&#xff0c;发展迅速&#xff0c;前端公众号是不是感觉越来越多了&#xff1f;在着辞旧迎新之际&#xff0c;这里盘点几个前端开发工程师 2021 年必须关注的优质公众号&#xff0c;希望对你有所帮助。大家可以像我一样&#xff0c;利用碎…

php 处理表单里面的 单双引号

转载链接&#xff1a;http://developer.51cto.com/art/200911/165392.htm 我们今天要向大家介绍的是PHP magic_quotes_gpc的具体使用方法。大家都知道在PHP中一个特殊的函数魔术函数&#xff0c;它在引用的过程中只有在传递$_GET,$_POST,$_COOKIE时才会发生作用。 PHP函数preg…

阿里云插件新版发布,多特性助力提升开发者体验

好消息&#xff01;阿里云 Cloud Toolkit 新版本于近日正式发布&#xff0c;推出了面向 IntelliJ 和 Eclipse 两个平台的新款插件&#xff0c;多个重大特性&#xff0c;持续提升开发者体验&#xff0c;本文将带大家快速预览该新版本。 本文只挑选下面三个重大特性进行解读&…

海鸥表表带太长了怎么拆_表带安装,表带太长了,怎么拆解和安装?

表带太长了&#xff0c;怎么拆解和安装&#xff1f;1、准备拆表带前请看清楚表带背面的箭头。2、有箭头的带粒是可拆卸的。3、拧松拆带器把手&#xff0c;将表带放入表槽&#xff0c;并保持拆带器的钢针对准针孔&#xff0c;如图二&#xff0c;且拆带器的钢针顺着箭头的指示方向…

python类库31[文件和目录os+os.path+shutil]

一 常用函数 os模块 os.sep 表示默认的文件路径分隔符&#xff0c;windows为\, linux为/os.walk(spath): 用来遍历目录下的文件和子目录os.listdir(dirname)&#xff1a;列出dirname下的目录和文件os.mkdir() &#xff1a; 创建目录os.makedirs(): 创建目录&#xff0c;包含中间…

上一轮中奖信息公布

大家好&#xff0c;我是若川&#xff0c;抽奖活动其实挺耗时耗力的&#xff0c;尤其是留言和在看抽奖。比如我这篇文章写完就已经23:50了。特别想说的是&#xff1a;有126人点击了在看&#xff0c;但我的好友展示只有93人在看。说明还有30多人点击了在看&#xff0c;但忘记加我…

css判断不同分辨率显示不同宽度布局实现自适应宽度

转载链接&#xff1a;http://www.jb51.net/css/151312.html 点评&#xff1a;CSS判断不同分辨率浏览器&#xff08;显示屏幕&#xff09;显示不同宽度布局CSS3技术支持IE6到IE8。将用到css3 media样式进行判断&#xff0c;但IE9以下版本不支持CSS3技术&#xff0c;这里DIVCSS5给…

安卓相机 高帧率_Android MediaCodec和摄像头:如何实现更高的帧速率从相机获取帧原始数据?...

摄像机API有两个不同的参数用于控制帧速率&#xff1a;setPreviewFrameRate,它采用单帧速率值并且不推荐使用,setPreviewFpsRange采用一系列FPS值,是当前推荐的控制.单FPS设置控制不充分的原因是,有时您希望相机在黑暗条件下降低帧速率以使取景器保持明亮(静态相机取景器就是这…

开发、测试与QA的区别以及其他

觉得这个比喻比较新颖&#xff0c;觉得蛮有意思的&#xff0c;故转自过来。 最近部门中有同事在问这个问题&#xff0c;我想应该还是有满多人对这三个角色的定位还不是很清楚&#xff0c;因此就这三个角色谈谈我个人的认识。 网络上关于这三种角色的定义已经够多&#xff0c;在…

CentOS7Jenkins安装

2019独角兽企业重金招聘Python工程师标准>>> CentOS7Jenkins安装 2017年05月07日 20:20:32 申明霜 阅读数&#xff1a;13945 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/sms15732621690/article/details/713…

2020 全球 JS 现状调查报告

大家好&#xff0c;我是若川。偷偷告诉你&#xff0c;今天推文的第二条是在我的公众号回复「网盘」免费领取百度网盘会员&#xff0c;欢迎大家分享转发。给大家分享一篇好文&#xff0c;往期类似好文&#xff1a;2020 前端技术发展回顾2020年大前端技术趋势解读以下是正文&…

ie兼容响应式布局的实现总结 和 针对ie浏览器的CSS

参考链接&#xff1a;http://zhidao.baidu.com/link?urlbQioDKMnG_eQoE6dCxzd2hPtMyiB7phu6hBdOupn1Pjk1hV-ItXFZS5GDUBoH5qrfi9LXkUoSciXTiGN36G6LK 参考链接&#xff1a;http://blog.sina.com.cn/s/blog_601b97ee0101aszo.html ie浏览器hack .demo {padding:10px;padding:9…

group by 保留哪一条数据_使用R语言绘制一维数据统计图总结

加载数据 绘制茎叶图 绘制直方图 绘制概率密度曲线 绘制小提琴图 绘制箱线图 绘制小提琴图箱线图 集中趋势统计 分散程度 apply的使用加载数据模拟数据下载library(tidyverse) cjb <- read.csv("/home/wy/Downloads/cjb.csv",header TRUE,stringsAsFactors FALS…

npm安装和Vue运行

一、开始&#xff1a; 下载地址&#xff1a;http://nodejs.cn/download/ 下载安装&#xff1a; 直到 二、打开CMD,检查是否正常 在安装目录里新增两个文件夹 然后运行命令&#xff1a;如下图&#xff1a; npm config set prefix "D:\InstallSoftWare\nodejs\node_global&q…

Scott 32 岁前端年终总结,探寻另一种可能

今年一年都是飞快 这 10 年编程好时光&#xff0c;花费在不经意间&#xff0c;而立的第三年也即将用完&#xff1a;23 到 26 岁&#xff0c;花在了阿里&#xff0c;从入门到职业迷茫&#xff0c;27 到 29 岁&#xff0c;花在了创业&#xff0c;从热血到倒闭还钱&#xff0c;30 …

跨页数据传递的两种方式

选择具有PostBackUrl属性的三个控件Button、LinkButton、ImageButton。PostBackUrl属性的值就是投递的页面URL。 要在接收页面按对象的方式接收投递页面的表单中的值有两种方式&#xff1a; 1、PreviousPage.FindControl(“控件变量名”)&#xff0c;这个方法返回的是Control类…

linux批量杀进程_Linux下批量杀JAVA进程

在工作中经常需要停止JAVA进程&#xff0c;停止时间也比较长&#xff0c;那么有时候因为一些情况&#xff0c;需要把 linux 下JAVA所有进程kill 掉&#xff0c;又不能用killall 直接杀掉某一进程名称包含的所有运行中进程(我们可能只需要杀掉其中的某一类或运行指定参数命令的进…