Javascript生成图形验证码

Javascript生成图形验证码
本例为大家分享js生成的图形代码具体代码,供大家参考,具体内容如下
getgverify:功能(ID)
{

功能gverify(选项){ / /创建一个验证码,接收选项对象作为参数
this.options =选择{ / /默认参数值
id:
canvasid:verifycanvas
宽度:100画布,默认宽度
高度:30画布的默认高度
类型:混合图形验证代码默认类型混合:字母数字混合类型,数字,字母:纯数字字母
代码:
}

如果(object.prototype.tostring.call(选项)= ={物}){ / /判断类型的参数
对于(在选项中的var),根据参数,修改默认的参数值
这个选项{ } } =选项{ };
}
其他{ }
this.options.id =选项;
}

this.options.numarr =0,1,2,3,4,5,6,7,8,9。分裂(
this.options.letterarr = getallletter();

这_init();
This.refresh();
}

gverify.prototype = { {
版本号***
版本:'1.0.0,

初始化方法
_init:函数(){
无功控制= document.getelementbyid(这个选项。ID);
VaR的画布document.createelement(画布);
/ * this.options.width = con.offsetwidth > 0 con.offsetwidth:100 ;
this.options.height = con.offsetheight > 0 con.offsetheight:30 ;* /
canvas.id = this.options.canvasid;
canvas.width = this.options.width;
canvas.height = this.options.height;
canvas.style.cursor =指针;
canvas.innerhtml =你的浏览器版本不支持canvas;
con.appendchild(帆布);
var父=;
canvas.onclick =函数(){
Parent.refresh();
}
},

生成的验证码
刷新:函数(){
this.options.code =;
VaR的画布document.getelementbyid(这个选项。canvasid);
如果(帆布。getContext){
VaR CTX = canvas.getcontext(二维的);
}
Ctx.textBaseline = middle;

ctx.fillstyle =随机颜色(180, 240);
ctx.fillrect(0, 0,this.options.width,这个选项。高度);

如果(this.options.type = =混合){ / /验证码型
无功txtarr = this.options.numarr.concat(这个选项。letterarr);
否则如果}(this.options.type = =号){
无功txtarr = this.options.numarr;
{人}
无功txtarr = this.options.letterarr;
}

对于(var i = 1;i < 4;i + +){
VaR txt = txtarr { randomnum(0,txtarr。长度)};
this.options.code = txt;
ctx.font = '20px黑体;
/ / ctx.font = randomnum(这个选项。身高 / 2,这个选项。高度)'px +黑体; / /随机字体大小
ctx.fillstyle =随机颜色(50, 160); / /随机生成的字体颜色
/ * ctx.shadowoffsetx = randomnum(- 3, 3);
ctx.shadowoffsety = randomnum(- 3, 3);* /
ctx.shadowblur = randomnum(- 3, 3);
ctx.shadowcolor =RGBA(0, 0, 0,0.3);
var x = this.options.width / 5 *我;
var y = this.options.height / 2;
风险度= randomnum(- 30, 30);
设置旋转角度和坐标原点。
ctx.translate(x,y);
ctx.rotate(°×math.pi / 180);
Ctx.fillText(TXT,0, 0);
恢复旋转角和坐标**
Ctx.rotate(度* math.pi / 180);
Ctx.translate(X,Y);
}
画线干涉
对于(var i = 0;i < 4;i + +){
ctx.strokestyle =随机颜色(40, 180);
Ctx.beginPath();
Ctx.moveTo(randomnum(0,这个选项。宽度 / 2),randomnum(0,这个选项。身高 / 2));
Ctx.lineTo(randomnum(0,这个选项。宽度 / 2),randomnum(0,这个选项。高度));
Ctx.stroke();
}
绘制点***干扰
对于(var i = 0;i <这个选项。宽度 4;i + +){
ctx.fillstyle =随机颜色(0, 255);
Ctx.beginPath();
Ctx.arc(randomnum(0,这个选项。宽度),randomnum(0,这个选项。高度),1, 0, 2×数学。PI);
Ctx.fill();
}
},

验证码
验证:函数(代码){
VaR的附加码= code.tolowercase();
无功v_code = this.options.code.tolowercase();
如果(附加码= = v_code){
返回true;
其他{ }
返回false;
}
}
}

**生成字母顺序数组
功能getallletter(){
无功letterstr =A,B,C,D,E,F,G,H,I,J.
返回letterstr.split(
}
生成一个随机数***
功能randomnum(min,max){
返回math.floor(Math.random()*(最大值-最小)+分钟);
}
生成一个随机颜色***
函数的随机颜色(min,max){
VAR r = randomnum(min,max);
var g = randomnum(min,max);
var b = randomnum(min,max);
返回RGB()
}

返回新的gverify(ID);
}
调用方法
VaR的附加码=新gverify(ID);
验证方法
如果(verifycode.validate(输入码)){
返回true;
还有{ }
返回false;
}
以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部