画布实现验证码

1,html部分

<canvas id="vCode" class="vCode" width="100" height="40"></canvas>

 

2,js部分

//生成验证码
            function createVCode() {
                var codeString = ‘0,1,2,3,4,5,6,7,8,9‘;
                codeString += ‘,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z‘;
                codeString += ‘,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,t,z‘
                var codeArr = codeString.split(‘,‘);
                var codeData = [];
                var codeLength = 0;
                while (codeLength < 4) {
                    codeLength = Math.ceil(Math.random() * 5);
                }
                for (var i = 0; i < codeLength; i++) {
                    codeData.push(codeArr[Math.ceil(Math.random() * 62) - 1]);
                }
                var StringCodeData = codeData.join(‘‘);
                return StringCodeData;
            }

  

canvas渲染

function randomNum(min, max) {
                return Math.floor(Math.random() * (max - min) + min);
            }

            function randomColor(min, max) {
                var r = randomNum(min, max);
                var g = randomNum(min, max);
                var b = randomNum(min, max);
                return ‘rgb(‘ + r + ‘,‘ + g + ‘,‘ + b + ‘)‘;
            }

            //显示验证码
            function renderCode(codeData) {
                console.log(codeData);
                var canvas = document.getElementById(‘vCode‘);
                var width = canvas.width;
                var height = canvas.height;
                var ctx = canvas.getContext(‘2d‘);
                ctx.fillStyle = randomColor(180, 240);
                ctx.fillRect(0, 0, width, height);
                ctx.textBaseline = ‘bottom‘;
                for (var i = 0; i < codeData.length; i++) {
                    ctx.fillStyle = randomColor(30, 100);
                    ctx.font =‘bold ‘+randomNum(22, 36) + ‘px Arail‘;
                    var x = 10 + i * 16;
                    var y = randomNum(30, 40);
                    var deg = randomNum(-20, 20);
                    ctx.translate(x, y);
                    ctx.rotate(deg * Math.PI / 180);
                    ctx.fillText(codeData[i], 0, 0);
                    ctx.rotate(-deg * Math.PI / 180);
                    ctx.translate(-x, -y);
                }
                for (var j = 0; j < 5; j++) {
                    ctx.strokeStyle = randomColor(40, 180);
                    ctx.beginPath();
                    ctx.moveTo(randomNum(0, width), randomNum(0, height));
                    ctx.lineTo(randomNum(0, width), randomNum(0, height));
                    ctx.stroke();
                }
                for(var k =0;k<100;k++){
                    ctx.fillStyle = randomColor(0,255);
                    ctx.beginPath();
                    ctx.arc(randomNum(0,width),randomNum(0,height),1,0,2*Math.PI);
                    ctx.fill();
                }
            }

  

 

时间: 2024-12-14 02:34:25

画布实现验证码的相关文章

12-8-协议、请求、响应、画布(验证码制作)

fwrite(文件句柄,写入内容)         返回值为写入文件的字节长度 fopen(文件路径,打开方式)          这个便是文件句柄 fclose(文件句柄)              关闭文件句柄 文件句柄打开后,可以对文件进行读写操作,关闭文件句柄便不能再对文件进行读写操作了. copy(被复制文件路径,复制后存放文件的路径)                 复制文件 存放位置要包含文件名 unlink(文件路径)              删除文件 filemtime(文件

画布出现验证码

<?php/* * 验证码类 */class Captcha{    //成员属性    private $_width = 100;  //画布默认宽度    private $_height = 25;  //画布默认的高度            //成员方法    //生成一张图像,并输出到浏览器    public function makeImage()    {        //1. 先创建一个画布(在内存中创建一个图像资源)        $image = imagecreate

angular中使用canvas画布做验证码

//填充画布,五位随机数 drawNumber(): void { this.clearCanvas(); let ctx: CanvasRenderingContext2D = this.myGraph.nativeElement.getContext("2d"); ctx.shadowBlur = 200; ctx.shadowColor = "black"; ctx.font = "italic 20px Verdana"; ctx.tex

包装一个php的验证码类

验证码是我们开发的时候经常用到的功能,所以在此本人包装了一个验证码类,应该可以作为php的类插件用,在此分享给各位博客园的读友. 实现的原理也是很简单,就是利用画布的几个元素,再加上一些字符串的获取,东凑西凑就构成了,呵呵. 这里大概写一下思路吧,其实这个类已经注释的非常清楚了,不过,个人还是在行文前啰嗦一下. 首先是关于一些函数的解释,这里的解释纯属个人体会,有什么错误的地方,还请读者指正. 1.创建画布函数:imagecreatetruecolor(w,h); 说明:用于创建一个画布. w

画布Drawing.Bitmap (验证码时候用的)

<1>一般处理程序的图片处理 详情请参考:http://wenku.baidu.com/link?url=SrVlKGG2nzVuBIxUf6O_7NurKyVK4OuOakZJ_ET3kNf4Wknx1sXuA36_6ZZtOg3QZj1O_EKCFETmz0D3bKToD1dMPpTgmRVypNelmYKM2Pq <pre class="csharp" name="code">using System; using System.Col

画布实现随机验证码

1. html模板: 1 <div class="c-code"> 2 <canvas id="c-cvs"></canvas> 3 </div> 2. 使用: 2.1 引用js文件 2.2 在模板之外添加一个盒子,宽高必须给,验证码宽高与之相等 2.3 每调用一次drawBg(),刷新一次 2.4 drawBg().textArr 得到当前的文本内容存为数组 2.5 drawBg().text 得到当前的文本内容存为

验证码画布生成以及点击图片切换验证码

//这个验证码画布生成是师兄写的,不是本人写的 1 package com.didinx.common; 2 3 import javax.imageio.ImageIO; 4 import javax.servlet.ServletException; 5 import javax.servlet.annotation.WebServlet; 6 import javax.servlet.http.HttpServlet; 7 import javax.servlet.http.HttpSer

GD图片(画布)的制作及验证码的应用

创建画布:创建画布的函数有 imagecreatetruecolor(width,height);创建画布 width指画布的宽height指画布的高 imagecolorallocate(img,red,green,blue);创建画布句柄 img是一个画布资源,后面的rgb就代表一个颜色! imagetring(img,size,x,y,string,color);绘制文字 img:画布资源 size:文字的大小,这里只能是1-5,并且5最大 x.y:起始坐标 string:文字内容 col

php 扭曲验证码

1 <?php 2 3 class image{ 4 public static function code(){ 5 6 $str='abcdefghijklmnopqrstuvwxyz0123456789'; 7 $code = substr(str_shuffle($str),0,5); 8 9 // 2块画布 10 $src = imagecreatetruecolor(60, 25); 11 $dst = imagecreatetruecolor(60, 25); 12 13 // 灰