前端利用canvas画布生成验证码

Bertha 。 2022-05-17 04:05 307阅读 0赞

直接贴代码
js部分

  1. function randomRgbColor() { //随机生成RGB颜色
  2. var r = Math.floor(Math.random() * 256); //随机生成256以内r值
  3. var g = Math.floor(Math.random() * 256); //随机生成256以内g值
  4. var b = Math.floor(Math.random() * 256); //随机生成256以内b值
  5. return "rgb(" + r + "," + g + "," + b + ")"; //返回rgb(r,g,b)格式颜色
  6. }
  7. window.onload = function () {
  8. draw();
  9. document.getElementById("changeImg").onclick=function(){
  10. draw();
  11. }
  12. }
  13. function draw(){
  14. var canvas = document.getElementById("canvas");
  15. var context = canvas.getContext("2d");
  16. canvas.width = 120;
  17. canvas.height = 40;
  18. context.strokeRect(0, 0, 120, 40);
  19. var aCode = "A,B,C,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,W,X,Y,1,2,3,4,5,6,7,8,9";
  20. console.log(aCode.split(","));
  21. var aLength = aCode.split(",").length;
  22. for (var i = 0; i <= 3; i++) {
  23. var x = 20 + i * 20;
  24. var y = 20 + Math.random() * 10;
  25. var j = Math.floor(Math.random() * aLength);
  26. var deg = Math.random() * 90 * Math.PI / 180;//随机弧度
  27. var txt = aCode.split(",")[j];
  28. context.fillStyle = randomRgbColor();
  29. context.font = "bold 20px 微软雅黑";
  30. //修改坐标原点和旋转角度
  31. context.translate(x, y);
  32. context.rotate(deg);
  33. context.fillText(txt, 0, 0);
  34. //恢复坐标原点和旋转角度
  35. context.rotate(-deg);
  36. context.translate(-x, -y);
  37. }
  38. //干扰线
  39. for (var i = 0; i < 8; i++) {
  40. context.strokeStyle = randomRgbColor();
  41. context.beginPath();
  42. context.moveTo(Math.random() * 120, Math.random() * 40);
  43. context.lineTo(Math.random() * 120, Math.random() * 40);
  44. context.stroke();
  45. }
  46. /**绘制干扰点**/
  47. for (var i = 0; i < 20; i++) {
  48. context.fillStyle = randomRgbColor();
  49. context.beginPath();
  50. context.arc(Math.random() * 120, Math.random() * 40, 1, 0, 2 * Math.PI);
  51. context.fill();
  52. }
  53. }

html部分

  1. <canvas id="canvas"></canvas>
  2. <a href="javascript:;" id="changeImg">再换一张</a>

不知道为什么不能上传图片了,请自行测试。

发表评论

表情:
评论列表 (有 0 条评论,307人围观)

还没有评论,来说两句吧...

相关阅读

    相关 canvas画布

    canvas标签 <canvas></canvas> 接下来使用支持H5的浏览器打开该页面,将会看到如下内容: ![在这里插入图片描述][watermark

    相关 canvas-画布

    概述 HTML5 的 canvas 元素用于定义画布,是一个矩形区域,默认颜色为白色,默认大小为 300 \ 150;通过 JavaScript 可以在该区域上绘制图像

    相关 利用java自动生成验证

            验证码生成有两种形式,一种是保存一定的验证码图片在数据库中然后把相应的验证码也保存起来。通过查询数据库来确定用户输入的验证码是否正确。但是这种方式有很大的问题,