Canvas验证码是一种在网页上使用HTML5 Canvas元素生成的图形验证码。以下是一个简单的示例代码,用于生成和展示Canvas验证码:
HTML部分:
<canvas id="captchaCanvas" width="200" height="100"></canvas> <button onclick="generateCaptcha()">刷新验证码</button>
JavaScript部分:
function generateCaptcha() { var canvas = document.getElementById('captchaCanvas'); var context = canvas.getContext('2d'); // 生成随机验证码字符串 var captchaText = generateRandomCode(4); // 可自定义验证码长度 // 绘制背景色 context.fillStyle = '#f5f5f5'; context.fillRect(0, 0, canvas.width, canvas.height); // 绘制验证码文字 context.font = '30px Arial'; context.fillStyle = '#333'; context.fillText(captchaText, 50, 55); // 绘制干扰线 for (var i = 0; i < 6; i++) { context.strokeStyle = getRandomColor(); context.beginPath(); context.moveTo(getRandomNumber(0, canvas.width), getRandomNumber(0, canvas.height)); context.lineTo(getRandomNumber(0, canvas.width), getRandomNumber(0, canvas.height)); context.stroke(); } } // 生成指定范围内的随机整数 function getRandomNumber(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } // 生成随机颜色 function getRandomColor() { var r = getRandomNumber(0, 255); var g = getRandomNumber(0, 255); var b = getRandomNumber(0, 255); return 'rgb(' + r + ',' + g + ',' + b + ')'; } // 生成指定长度的随机验证码 function generateRandomCode(length) { var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; var code = ''; for (var i = 0; i < length; i++) { code += characters.charAt(Math.floor(Math.random() * characters.length)); } return code; }
以上代码会在网页上显示一个Canvas元素和一个刷新按钮。点击刷新按钮时,会生成一个新的随机验证码并在Canvas上展示出来,同时绘制一些干扰线以增加验证码的可读性和安全性。
您可以根据实际需求自定义验证码的长度、字体样式、颜色等。此外,为了增加验证码的安全性,还可以考虑添加字体扭曲、噪点、阴影等效果,以防止机器自动识别。