国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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
主站蜘蛛池模板: 久久久国产一区二区三区 | 色综合久久久久久久久久久 | 美女网站黄视频 | 欧美一级免费高清 | 国户精品久久久久久久久久久不卡 | 国产亚洲精品美女久久久久久久久久 | yy6080一级二级 | 日韩中文字幕一区 | 欧美激情一区二区三区 | 亚洲午夜成激人情在线影院 | 国产精品久久国产精品 | 久久久久久久久久久九 | 日韩成人在线网站 | www.99re| 久久精品亚洲精品 | 成人免费看 | 九九99| 国产大学生一区 | 亚洲精品第一 | 999精品视频| 国产91亚洲精品 | 亚洲视频一区在线观看 | 精品视频网| 国产成人精品一区二区三区视频 | 午夜视频精品 | 日韩1区 | 日韩av一区二区在线观看 | 国产一区二区久久 | 久精品视频 | 久久免费精品视频 | 国内自拍视频在线观看 | 久久av一区二区三区 | 亚洲久久 | 日韩精品1区2区3区 国产日韩在线视频 | 日本精品在线观看 | 欧美日本一区二区三区 | 成人免费国产 | 日韩中文字幕在线观看 | 懂色av成人一区二区三区 | 欧美日韩视频在线 | 久久黄网站 |