Vueプロジェクトがグラフィック検証コードを実装

Vueプロジェクトがグラフィック検証コードを実装

この記事の例では、グラフィック検証コードを実装するためのVueプロジェクトの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

効果のプレビュー: (プロジェクトではすっきりとした外観が求められるため、背景はありません。ただし、次のコードには背景の干渉が含まれます)

1. 識別プラグインをダウンロードします。コマンド: npm i identify

2. コンポーネントディレクトリに新しいvueコンポーネントを作成します。私の名前はsIdentify.vueです。

3. 次のコードをコンポーネントにコピーします (カスタマイズできます)。

<テンプレート>
  <div class="s-canvas">
    <canvas id="s-canvas" :width="contentWidth" :height="contentHeight"></canvas>
  </div>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
  名前: "SIdentify",
  小道具: {
    識別コード:
      タイプ: 文字列、
      デフォルト: "1234"
    },
    フォントサイズ最小: {
      タイプ: 数値、
      デフォルト: 35
    },
    フォントサイズ最大: {
      タイプ: 数値、
      デフォルト: 35
    },
    背景色最小: {
      タイプ: 数値、
      デフォルト: 180
    },
    背景色最大: {
      タイプ: 数値、
      デフォルト: 240
    },
    色最小:
      タイプ: 数値、
      デフォルト: 50
    },
    色最大値: {
      タイプ: 数値、
      デフォルト: 160
    },
    ラインカラー最小: {
      タイプ: 数値、
      デフォルト: 100
    },
    ラインカラー最大: {
      タイプ: 数値、
      デフォルト: 200
    },
    ドットカラー最小: {
      タイプ: 数値、
      デフォルト: 0
    },
    ドットカラーマックス: {
      タイプ: 数値、
      デフォルト: 255
    },
    コンテンツ幅: {
      タイプ: 数値、
      デフォルト: 120
    },
    コンテンツの高さ: {
      タイプ: 数値、
      デフォルト: 40
    }
  },
  メソッド: {
    // 乱数を生成する randomNum(min, max) {
      Math.floor(Math.random() * (max - min) + min) を返します。
    },
    // ランダムな色を生成する randomColor(min, max) {
      r = this.randomNum(min, max); とします。
      g = this.randomNum(min, max); とします。
      b = this.randomNum(min, max) とします。
      "rgb(" + r + "," + g + "," + b + ")" を返します。
    },
    透明() {
      "rgb(255,255,255)"を返します。
    },
    描画画像() {
      キャンバスを document.getElementById("s-canvas");
      ctx = canvas.getContext("2d"); とします。
      ctx.textBaseline = "下";
      // 背景を描画します // ctx.fillStyle = this.randomColor(
      // this.backgroundColorMin、
      // this.backgroundColorMax
      // );
      ctx.fillStyle = this.transparent();
      ctx.fillRect(0, 0, this.contentWidth, this.contentHeight);
      // テキストを描画する for (let i = 0; i < this.identifyCode.length; i++) {
        this.drawText(ctx, this.identifyCode[i], i);
      }
      // this.drawLine(ctx)
      // this.drawDot(ctx)
    },
    テキストを描画します(ctx, txt, i) {
      ctx.fillStyle = this.randomColor(this.colorMin, this.colorMax);
      ctx.フォント =
        this.randomNum(this.fontSizeMin, this.fontSizeMax) + "px SimHei";
      x = (i + 1) * (this.contentWidth / (this.identifyCode.length + 1)) とします。
      y = this.randomNum(this.fontSizeMax, this.contentHeight - 5) とします。
      var deg = this.randomNum(-10, 10);
      // 座標の原点と回転角度を変更します ctx.translate(x, y);
      ctx.rotate((deg * Math.PI) / 180);
      ctx.fillText(txt, 0, 0);
      // 座標原点と回転角度を復元します ctx.rotate((-deg * Math.PI) / 180);
      ctx.translate(-x, -y);
    },
    描画線(ctx) {
      // 干渉線を描く for (let i = 0; i < 8; i++) {
        ctx.strokeStyle = this.randomColor(
          this.lineColorMin、
          this.lineColorMax
        );
        ctx.beginPath();
        ctx.moveTo() 関数は、
          this.randomNum(0, this.contentWidth)、
          this.randomNum(0, this.contentHeight)
        );
        ctx.lineTo() 関数は、
          this.randomNum(0, this.contentWidth)、
          this.randomNum(0, this.contentHeight)
        );
        ctx.stroke();
      }
    },
    描画ドット(ctx) {
      // 干渉点を描画する for (let i = 0; i < 100; i++) {
        ctx.fillStyle = this.randomColor(0, 255);
        ctx.beginPath();
        ctx.arc(
          this.randomNum(0, this.contentWidth)、
          this.randomNum(0, this.contentHeight)、
          1、
          0,
          2 * 数学.PI
        );
        ctx.fill();
      }
    }
  },
  時計:
    識別コード() {
      このメソッドは、次のコードで実行されます。
    }
  },
  マウント() {
    このメソッドは、次のコードで実行されます。
  }
};
</スクリプト>

4. 検証コードが必要なページにコンポーネントを導入し、メソッドを記述します。

<テンプレート>
<div class="get-code" @click="refreshCode()">
    <s-identify :identifyCode="identifyCode"></s-identify>
</div>
</テンプレート>
<スクリプト>
    "@/components/sIdentify.vue" から SIdentify をインポートします。
    エクスポートデフォルト{
        コンポーネント: { SIdentify },
        データ() {
           戻る {
                識別コード: "",
                identifyCodes: "0123456789abcdwerwshdjeJKDHRJHKOOPLMKQ", // 入力するだけです}
        },
        メソッド: {            
           リフレッシュコード(){//
             this.identifyCode = "";
             this.makeCode(this.identifyCodes,4);
           },
           ランダム数 (最小, 最大) {
             最大値 = 最大値 + 1
             Math.floor(Math.random() * (max - min) + min) を返します。
           },
           // 検証コードをランダムに生成する string makeCode (data, len) {
             (i = 0; i < len; i++) の場合 {
             this.identifyCode += data[this.randomNum(0, data.length - 1)]
           }
        }
    }
</スクリプト>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue検証コードの60秒カウントダウン機能の簡単な実装
  • vueは携帯電話経由でSMS認証コードを送信する登録機能を実装します
  • Vueはランダムな検証コードサンプルコードを生成します
  • Vue+element-uiはランダム検証コード+ユーザー名+パスワードフォーム検証機能を統合します
  • VUEは画像検証コード機能を実装
  • Vue にモバイル検証コードコンポーネント機能を追加する方法
  • Vueは検証コード入力ボックスコンポーネントを実装します
  • Vue がスライディングパズル検証コード機能を実装
  • Vueはログイン時に画像認証コードを実装します
  • Vueはグラフィック検証コードを実装する

<<:  SqlクエリMySqlデータベーステーブル名と説明テーブルフィールド(列)情報

>>:  Linux での sshd サービスとサービス管理コマンドの詳細な説明

推薦する

Dockerのデフォルトネットワークセグメントを変更する実装方法の分析

背景同社のサーバーはすべて Alibaba Cloud ECS ホストを購入しています。デフォルトの...

Webデザインの経験: Webコードを効率的に書く

本来、この第 7 章では、デザインにおけるレイヤーと空間テクニックについて深く議論するはずです。しか...

HTMLテーブルタグの詳しい解説(初心者向け)

表> <TR> <TD> <TH> <キャプション&...

MySQL の InnoDB ストレージ ファイルの詳細な説明

物理的に言えば、InnoDB テーブルは、共有テーブルスペース ファイル (ibdata1)、排他テ...

Vue のグローバル ウォーターマーク実装例

目次1. 透かしのJsファイルを作成する2. 導入操作2.1 App.vueや他のページでの参照2....

MySQLの基本的な共通コマンドの概要

目次MySQL の基本的な共通コマンド1. SQL文2. テーブルを作成する3. フィールドのプロパ...

JS配列の一般的な方法とテクニックを学び、マスターになりましょう

目次splice() メソッドjoin() メソッド逆() メソッドevery() メソッド削減()...

Vue プロジェクトで TypeScript クラスを適用する方法

目次1. はじめに2. 使用1. @コンポーネント2. 計算、データ、方法3. @props 4. ...

Vue + OpenLayers クイックスタートチュートリアル

Openlayers は、WebGIS クライアント向けのモジュール式で高性能かつ機能豊富な Jav...

MySQL ファジークエリの使用法 (通常、ワイルドカード、組み込み関数)

目次1. MySQL ワイルドカード ファジー クエリ (%,_) 1-1. ワイルドカードの分類1...

はじめに: HTML の基本的なタグと属性の簡単な紹介

HTML はタグと属性で構成されており、これらを組み合わせてブラウザにページの表示方法を指示します。...

純粋な CSS3 で水平無限スクロールを実装するためのサンプル コード

この記事の例はすべて小さなプログラムで書かれていますが、実装される機能には影響しません。 wxmlル...

MySql エラー 1698 (28000) の解決策

1. 問題の説明: MysqlERROR1698 (28000) の解決方法、新しくインストールされ...

TypeScript 列挙の基本と例

目次序文TypeScript の列挙型とは何ですか? TypeScriptで列挙型を使用する際に注意...

MySql バージョンの問題に対する完璧なソリューション sql_mode=only_full_group_by

1. sql_modeを確認する @@sql_mode を選択照会された値は次のとおりです。 ON...