本例为大家
分享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;
}
以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。