献上一款漂亮的手写PHP验证码

献上一款漂亮的PHP验证码,可以根据个人需求作调整,代码如下(审美观不同,欢迎吐槽):

<?php
/**
 *  Author: xiongwei
 *  Email:  [email protected]
 *
 *  注:本代码需要要用到 msyh.ttf 字体,请自行下载
**/

header("Content-type:image/png");

//图像尺寸
$width=180;
$height=70;
//字体样式
 $font_style=‘./fontface/msyh.ttf‘;
//字体大小
$font_size=28;
//干扰点数量
$noise_num=40;
//干扰线数量
$line_num=10;

 $expression=‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ‘;
 $expression=substr(str_shuffle($expression),0,4);

 $img=imagecreatetruecolor($width,$height);
 $bdcolor=imagecolorallocate($img,170,170,170);
 $bgcolor=imagecolorallocate($img,250,250,250);

imagefilledrectangle($img,0,0,$width,$height,$bgcolor);
imagerectangle($img,0,0,$width-1,$height-1,$bdcolor);

$x=10;
$y=ceil(($height+$font_size)/2);
for($i=0;$i<strlen($expression);$i++){
    imagettftext($img,$font_size,mt_rand(-30,30),$x,$y,imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)),$font_style,$expression[$i]);
    $x+=30;
}
for($i=0;$i<$noise_num;$i++){
    imagesetpixel($img,mt_rand(1,$width-1),mt_rand(1,$height-1),imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)));
}
for($i=0;$i<$line_num;$i++){
    imagearc($img,mt_rand(-10,0),mt_rand(-10,0),mt_rand(20,400),mt_rand(20,400),50,44,imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)));
    //imagearc()
}
imagepng($img);
imagedestroy($img);
?>

效果如下:

时间: 2024-10-11 05:45:07

献上一款漂亮的手写PHP验证码的相关文章

按书上的要求,自己手写的两种数组插入排序

public class ArraySort { public static void main(String[] args) { // TODO Auto-generated method stub int sortNumber = 5; int sortCountA = 0; int sortCountB = 0; int arraySourceA[] = {6, 3, 21, 43, 5667, 7890, 123, 4, 4323, 5453, 2323, 45245, 3213, 13

设计师收藏的20款英文手写字体【免费下载】

在所有的字体类型中,手写字体是最有用的和用途最多的.根据你需要完成的任务,使用手写字体的地方无处不在.找到合适的匹配特定的项目的字体是很耗费时间的. 所以在这里,我收集了20款精美的手写字体,可以在你未来的设计中使用.这些字体是完全免费的,所以赶快行动吧! 您可能感兴趣的相关文章 字体大宝库:10款有趣的精美节日字体 分享20款很漂亮的免费英文LOGO字体 字体大宝库:20款充满艺术感英文字体 推荐20款免费的又好看的英文手写字体 向设计师推荐20款好看的英文装饰字体 Pacifico Reco

设计师福利:免费使用10款英文手写字体

        又送福利,解决设计师为老土字体抓狂的烦恼,特来送英文手写字体免费使用下载包~让你的设计更加高大上吧~         Pacifico(下载地址)         Recorda Script(下载地址)         Wolf in the City(下载地址)         Hey Pretty Girl(下载地址)         Impregnable(下载地址)         Love & Trust(下载地址)         Mathlete(下载地址)   

图片上的手写文字怎样才能转换成文档文字?

不知道大家有没有曾遇到过将手写的图片内容转化成文字的情况,那么大家都是怎样操作的呢?不会和小编一样将图片上的文字一点一点的敲打成文档文字的吧!其实生活中是有简单的方法的,今天小编就将这个简单的操作方法分享给大家. 第一步:首先,我们需要打开一个OCR文字识别工具,如果小伙伴们的电脑上没有这样的软件的话,可以下载一款哈. 第二步:在OCR文字识别功能的页面中,从多种功能中选择"手写字体识别",并且需要在手写字体识别的页面中上传图片,这样就可以进行手写字识别的操作了. 第三步:将手写字体的

wex5 实战 手写签名与上传

之前做过一个物流演示模块,有一个功能没做完,就是收件人收货后,可以手写签名并上传,替代传统纸张的签名.今天终于做完了. 一 效果演示: 后台图片上传成功 二 设计思路: 运用canvas插件jq-signature,制作手写签名,并通过二进制流方式上传图片 三 代码实现: 1 .下载引入插件jq-signature 手写签名插件,网上有很多,经过多种插件的逐步尝试,只有插件jq-signature达到了我想要的效果; 原因有二:1,支持手机触摸,web,鼠标.其它有的不支持手机触摸. 2,直接转

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件/库 一提到移动端的下拉刷新上拉翻页,你可能就会想到iScroll插件,没错iScroll是一个高性能,资源占用少,无依赖,多平台的javascript滚动插件.iScroll不仅仅是 滚动.它可以处理任何需要与用户进行移动交互的元素.在你的项目中包含仅仅4kb大小的iScroll,你的项目便拥有了滚动,缩放,平移,无限滚动,视差滚动,旋转功能.iScroll的强大毋庸置疑,本人也非常欢迎大家使用iScr

在Kaggle手写数字数据集上使用Spark MLlib的朴素贝叶斯模型进行手写数字识别

昨天我在Kaggle上下载了一份用于手写数字识别的数据集,想通过最近学习到的一些方法来训练一个模型进行手写数字识别.这些数据集是从28×28像素大小的手写数字灰度图像中得来,其中训练数据第一个元素是具体的手写数字,剩下的784个元素是手写数字灰度图像每个像素的灰度值,范围为[0,255],测试数据则没有训练数据中的第一个元素,只包含784个灰度值.现在我打算使用Spark MLlib中提供的朴素贝叶斯算法来训练模型. 首先来设定Spark上下文的一些参数: val conf = new Spar

在Kaggle手写数字数据集上使用Spark MLlib的RandomForest进行手写数字识别

昨天我使用Spark MLlib的朴素贝叶斯进行手写数字识别,准确率在0.83左右,今天使用了RandomForest来训练模型,并进行了参数调优. 首先来说说RandomForest 训练分类器时使用到的一些参数: numTrees:随机森林中树的数目.增大这个数值可以减小预测的方差,提高预测试验的准确性,训练时间会线性地随之增长. maxDepth:随机森林中每棵树的深度.增加这个值可以是模型更具表征性和更强大,然而训练也更耗时,更容易过拟合. 在这次的训练过程中,我就是反复调整上面两个参数

JDK动态代理深入理解分析并手写简易JDK动态代理(上)

原文引用https://www.dazhuanlan.com/2019/08/26/5d6300df6f20f/ 博客真的是好几个月没更了,2019新年第一篇,继续深入动态代理,前两篇简单分析了动态代理的实现原理之后,这次继续深入了解具体的实现方式,并手写一套简易的动态代理已加强理解: 本博客关于Java动态代理相关内容直达链接: JDK动态代理浅析 Cglib动态代理浅析 JDK动态代理深入理解分析并手写简易JDK动态代理(上) JDK动态代理深入理解分析并手写简易JDK动态代理(下) 博客真