微信小程序实现图形验证码

 更新时间:2022年05月26日 15:15:08   作者:php的绯闻女友  
这篇文章主要为大家详细介绍了微信小程序实现图形验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了微信小程序实现图形验证码的具体代码,供大家参考,具体内容如下

1.wxml页面

<canvas canvas-id="canvas" bindtap='change' style="width:90px;height: 30px;"></canvas>

2.js页面

var app = getApp();
var baseUrl = getApp().baseUrl;
var ctx;
data:{
    text:""
},
onLoad: function(options) {
    var that = this;
    this.drawPic(that);
},
change: function() {
    var that = this;
    this.drawPic(that);
},
mobile(e) {
    this.setData({
        mobile: e.detail.value
    })
},
randomNum(min, max) {
return Math.floor(Math.random() * (max - min) + min);
},
/**生成一个随机色**/
randomColor(min, max) {
let r = this.randomNum(min, max);
let g = this.randomNum(min, max);
let b = this.randomNum(min, max);
return "rgb(" + r + "," + g + "," + b + ")";
},
 
/**绘制验证码图片**/
drawPic(that) {
ctx = wx.createCanvasContext('canvas');
/**绘制背景色**/
ctx.fillStyle = this.randomColor(180, 240); //颜色若太深可能导致看不清
ctx.fillRect(0, 0, 90, 28)
/**绘制文字**/
var arr;
var text = '';
var str = 'ABCEFGHJKLMNPQRSTWXY123456789';
for (var i = 0; i < 4; i++) {
   var txt = str[this.randomNum(0, str.length)];
   ctx.fillStyle = this.randomColor(50, 160); //随机生成字体颜色
   ctx.font = this.randomNum(20, 26) + 'px SimHei'; //随机生成字体大小
   var x = 5 + i * 20;
   var y = this.randomNum(20, 25);
   var deg = this.randomNum(-20, 20);
   //修改坐标原点和旋转角度
   ctx.translate(x, y);
   ctx.rotate(deg * Math.PI / 180);
   ctx.fillText(txt, 5, 0);
   text = text + txt;
   //恢复坐标原点和旋转角度
   ctx.rotate(-deg * Math.PI / 180);
   ctx.translate(-x, -y);
}
/**绘制干扰线**/
for (var i = 0; i < 4; i++) {
   ctx.strokeStyle = this.randomColor(40, 180);
   ctx.beginPath();
   ctx.moveTo(this.randomNum(0, 90), this.randomNum(0, 28));
   ctx.lineTo(this.randomNum(0, 90), this.randomNum(0, 28));
   ctx.stroke();
}
/**绘制干扰点**/
for (var i = 0; i < 20; i++) {
   ctx.fillStyle = this.randomColor(0, 255);
   ctx.beginPath();
   ctx.arc(this.randomNum(0, 90), this.randomNum(0, 28), 1, 0, 2 * Math.PI);
   ctx.fill();
}
ctx.draw(false, function() {
   that.setData({
       text: text
   })
});

3.效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • bootstrap配合Masonry插件实现瀑布式布局

    bootstrap配合Masonry插件实现瀑布式布局

    这篇文章主要为大家详细介绍了bootstrap配合Masonry插件实现瀑布式布局,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 异步安全加载javascript文件的方法

    异步安全加载javascript文件的方法

    这篇文章主要介绍了异步安全加载javascript文件的方法,实例分析了javascript实现文件异步加载的具体技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • js实现文本框输入文字个数限制代码

    js实现文本框输入文字个数限制代码

    这篇文章主要介绍了js实现文本框输入文字个数限制代码,文本框输入的文字个数并不是无限制的,一般都会限定一个输入最高上限,如何限制,请看本文
    2015-12-12
  • JavaScript基础之文件上传与下载的实现详解

    JavaScript基础之文件上传与下载的实现详解

    这篇文章主要为大家详细介绍了JavaScript实现文件上传与下载功能的相关资料,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以学习一下
    2023-01-01
  • javascript 获取元素样式必杀技

    javascript 获取元素样式必杀技

    这篇文章主要介绍了javascript 获取元素样式必杀技,需要的朋友可以参考下
    2014-05-05
  • BootStrap入门教程(三)之响应式原理

    BootStrap入门教程(三)之响应式原理

    这篇文章主要介绍了BootStrap入门教程(三)之响应式原理的相关资料,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-09-09
  • 前端使用Compressor.js实现图片压缩上传的详细过程

    前端使用Compressor.js实现图片压缩上传的详细过程

    Compressor.js一个JavaScript图像压缩器,使用浏览器的原生canvas.toBlob API来执行压缩工作,这篇文章主要给大家介绍了关于前端使用Compressor.js实现图片压缩上传的详细过程,需要的朋友可以参考下
    2024-07-07
  • js实现二级导航功能

    js实现二级导航功能

    本文主要介绍了js实现二级导航功能的实例,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • 在原生不支持的旧环境中添加兼容的Object.keys实现方法

    在原生不支持的旧环境中添加兼容的Object.keys实现方法

    下面小编就为大家带来一篇在原生不支持的旧环境中添加兼容的Object.keys实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • JavaScript数组塌陷实例解析

    JavaScript数组塌陷实例解析

    这篇文章主要为大家介绍了JavaScript数组塌陷实例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05

最新评论