一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - 繪制微信小程序驗證碼功能的實例代碼

繪制微信小程序驗證碼功能的實例代碼

2021-12-27 15:53WALL*E js教程

這篇文章主要介紹了繪制微信小程序驗證碼功能的實例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

1.在 utils 文件中新建 mcaptcha.js 文件,寫入以下代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
module.exports = class Mcaptcha {
  //畫板
 constructor(options) {
  this.options = options;
  this.fontSize = options.height * 3 / 4;
  this.init();
  this.refresh(this.options.code);
 }
 init() {
  this.ctx = wx.createCanvasContext(this.options.el);
  this.ctx.setTextBaseline("middle");
  this.ctx.setFillStyle(this.randomColor(180, 240));
  this.ctx.fillRect(0, 0, this.options.width, this.options.height);
 }
  //繪制彩圖
 refresh(code) {
  let arr = (code + '').split('');
  let width = this.options.width;
  let height = this.options.height;
  let ctx = this.ctx;
  if (arr.length === 0) {
   arr = ['e', 'r', 'r','o','r'];
  };
  let offsetLeft = width * 0.6 / (arr.length - 1);
  let marginLeft = width * 0.2;
  arr.forEach((item, index) => {
   ctx.setFillStyle(this.randomColor(0, 180));
   let size = this.randomNum(24, this.fontSize);
   ctx.setFontSize(size);
   let dis = offsetLeft * index + marginLeft - size * 0.3;
   let deg = this.randomNum(-30, 30);
   ctx.translate(dis, height*0.5);
   ctx.rotate(deg * Math.PI / 180);
   ctx.fillText(item, 0, 0);
   ctx.rotate(-deg * Math.PI / 180);
   ctx.translate(-dis, -height * 0.5);
  })
  //繪制干擾線
  for (var i = 0; i < 2; i++) {
      ctx.strokeStyle = this.randomColor(40, 180);
      ctx.beginPath();
      ctx.moveTo(this.randomNum(0, width), this.randomNum(0, height));
      ctx.lineTo(this.randomNum(20, width), this.randomNum(2, height));
      ctx.stroke();
  }
  //繪制干擾點
  for (var i = 0; i < 30; i++) {
      ctx.fillStyle = this.randomColor(0, 255);
      ctx.beginPath();
      ctx.arc(this.randomNum(0, width), this.randomNum(0, height), 1, 0, 2 * Math.PI);
      ctx.fill();
     }
  ctx.draw();
 }
  //設置隨機數的顏色
 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 + ")";
 }
}

2.在需要驗證碼的js文件中引入

?
1
let Mcaptcha = require("../../../utils/mcaptcha.js");

res.data 是要傳到mcaptcha.js 中的 code 值,也就是驗證碼,可以隨意寫為如:“ho55”,“a2sd” 等等。我這里是從后臺傳過來的數據,(前人寫的代碼,不好改動,只在前端加上干擾線和彩圖)。

?
1
2
3
4
5
6
new Mcaptcha({
  el: 'canvas',
  width: 100,
  height: 30,
  code: res.data
});

wxml 文件, bindtap="getImgYZM"new Mcaptcha 的方法名,再次點擊可以換驗證碼圖片。

?
1
2
3
<view bindtap="getImgYZM" class="yzm">
  <canvas style="width:{{cvs.width}};height:{{cvs.height}};" canvas-id="canvas"></canvas>
</view>

如果是在前端設置隨機數,可以在data:{} 里面寫

?
1
2
3
4
5
6
7
8
9
10
11
data: {
   str:"0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z",
   randStr:""
 }
//獲取隨機數
var res = "";
for(var i = 0; i < str.length ; i ++) {
  var id = Math.ceil(Math.random()*35);
  res += chars[id];
}
return res;

這一步可不看,以下是后端C#語言產生隨機數返給前端的代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using JobClass;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.SessionState;
 
namespace WebSite.pcode
{
  /// <summary>
  /// getcode 的摘要說明
  /// </summary>
  public class getcode : IHttpHandler, IRequiresSessionState
  {
    public void ProcessRequest(HttpContext context)
    {
      context.Response.ContentType = "text/plain";
      string str = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z";
      string randStr = "";
      //生成隨機數 Random
      Random randobj = new Random();
      string[] arr = str.Split(',');
      for (int i = 0; i < 4; i++)
      {
        randStr += arr[randobj.Next(arr.Length)];
      }
      context.Response.Write(randStr);
      return;
    }
    public bool IsReusable
    {
      get
      {
        return false;
      }
    }
  }
}

到此這篇關于繪制微信小程序驗證碼功能的實例代碼的文章就介紹到這了,更多相關微信小程序驗證碼內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/cyapi/archive/2021/01/05/14234237.html

延伸 · 閱讀

精彩推薦
  • js教程javascript實現隨機抽獎功能

    javascript實現隨機抽獎功能

    這篇文章主要為大家詳細介紹了javascript實現隨機抽獎功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    彴兗6922021-12-23
  • js教程mapboxgl實現帶箭頭軌跡線的代碼

    mapboxgl實現帶箭頭軌跡線的代碼

    這篇文章主要介紹了mapboxgl實現帶箭頭軌跡線的代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下...

    GIS兵器庫9122021-12-27
  • js教程微信小程序實現下拉加載更多商品

    微信小程序實現下拉加載更多商品

    這篇文章主要為大家詳細介紹了微信小程序實現下拉加載更多商品,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    保護我方豆豆8102021-12-22
  • js教程ES6字符串的擴展實例

    ES6字符串的擴展實例

    這篇文章主要介紹了ES6字符串的擴展實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小...

    知否5502021-12-16
  • js教程詳解JavaScript中分解數字的三種方法

    詳解JavaScript中分解數字的三種方法

    這篇文章主要介紹了在JavaScript中分解數字的三種方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下...

    Hunter網絡安全6042021-12-27
  • js教程基于javascript實現移動端輪播圖效果

    基于javascript實現移動端輪播圖效果

    這篇文章主要為大家詳細介紹了基于javascript實現移動端輪播圖效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    A.香辣雞腿堡8982021-12-15
  • js教程微信小程序實現購物車小功能

    微信小程序實現購物車小功能

    這篇文章主要為大家詳細介紹了微信小程序實現購物車小功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    小王同學Max5412021-12-22
  • js教程JavaScript 防盜鏈的原理以及破解方法

    JavaScript 防盜鏈的原理以及破解方法

    這篇文章主要介紹了JavaScript 防盜鏈的原理以及破解方法,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下...

    LuckyChou10242021-12-22
主站蜘蛛池模板: 干露露视频 性感写真 | 九九热在线观看视频 | 羞羞视频麻豆 | 四虎永久成人免费 | 国色天香社区在线视频免费观看 | 好爽轻点太大了太深了 | 四虎精品成人免费观看 | 国产短视频精品一区二区三区 | 污小说h | 亚洲精品国产成人7777 | 亚洲精品视频在线 | ass日本乱妇ass | 8x8拨擦拨擦华人免费 | 成人人免费夜夜视频观看 | 国产乱妇无码大片在线观看 | 日韩亚洲一区中文字幕在线 | 国产99区 | 欧美a欧美1级 | 日韩无遮挡大尺度啪啪影片 | 动漫美女被吸乳 | 日本一道高清不卡免费 | 久久久久嫩草影院精品 | nhdta系列媚药系列 | 青青青青青国产费线在线观看 | 激情小说欧美图片 | 掀开奶罩边躁狠狠躁软学生 | 欧洲肥女大肥臀tv | 日本厕所spy2wc | 亚洲第一区欧美日韩精品 | seetube18日本第一次 | 超h 超重口 高h 污肉1v1 | 91精品国产综合久久香蕉 | crdy在线看亚洲 | a级毛片毛片免费很很综合 a级黄色视屏 | 国产清纯女高中生在线观看 | 国产精品区牛牛影院 | 攻插受 | 星空无限传媒xk8046 | 欧美日韩国产成人综合在线影院 | 亚洲欧美一区二区三区在饯 | 香蕉免费高清完整 |