canvas底纹随机验证码制作

本文介绍了一个使用HTML和Canvas API生成验证码的示例代码。该示例通过JavaScript动态生成带有随机数字、干扰线和干扰点的验证码图片,并实现了验证码刷新功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、HTML

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #mycanvas{
                border: 1px solid;
                margin-top: 10px;
                margin-left: 90px;
            }
        </style>
    </head>
    <body>
        <form method="get" onsubmit="return yanzheng()"> 验证码:
            <input type="text" name="num" id="yzm" />
            <input type="submit" value="提交"  onclick="return yanzheng()"/>
            <br />
        </form>

        <canvas id="mycanvas" onclick="shengchengyzm()"></canvas>

        <script type="text/javascript">
            var hb;
            window.onload=function(){
                var mycanvas=document.getElementById("mycanvas");
                mycanvas.width=100;
                mycanvas.height=40;
                hb=mycanvas.getContext("2d");
                hb.fillStyle=getcolor();
                hb.fillRect(0,0,100,40);
            }
            function shengchengyzm(){
                hb.beginPath();
                var ran=parseInt(Math.random()*10000)%900000+100000;
                hb.font="20px 微软雅黑";
                hb.fillStyle=getcolor();
                hb.fillText(ran,15,28);
                //干扰线
                for (var i = 0; i < 20; i++) {
                    hb.beginPath();
                    var w=parseInt(Math.random()*10000)%mycanvas.width;
                    var h=parseInt(Math.random()*10000)%mycanvas.height;
                    hb.moveTo(w,h);
                    w=parseInt(Math.random()*10000)%mycanvas.width;
                    h=parseInt(Math.random()*10000)%mycanvas.height;
                    hb.lineTo(w,h);
                    hb.strokeStyle=getcolor();
                    hb.stroke();
                }
                //干扰点
                for (var i = 0; i <100; i++) {
                    hb.beginPath();
                    var w=parseInt(Math.random()*10000)%mycanvas.width;
                    var h=parseInt(Math.random()*10000)%mycanvas.height;
                    hb.moveTo(w,h);
                    hb.lineTo(w+1,h+1);
                    hb.strokeStyle=getcolor();
                    hb.stroke();
                }
                //蒙版
                hb.beginPath();
                hb.fillStyle="rgba(255,255,0,0.4)";
                hb.fillRect(0,0,100,40);
            };
            function getcolor(){
                var r=parseInt(Math.random()*10000)%256;
                var g=parseInt(Math.random()*10000)%256;
                var b=parseInt(Math.random()*10000)%256;
                return "rgb("+r+","+g+","+b+")";
            }
            function yanzheng(){
                return false;
            }
        </script>
    </body>
</html>

二、效果图
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值