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 サービスとサービス管理コマンドの詳細な説明

推薦する

html 内の絶対パス URL と相対パス URL、サブディレクトリ、親ディレクトリ、ルート ディレクトリ

絶対 URL は、インターネット上の特定のファイルに必要なすべてのコンテンツを表すために使用されます...

LinuxサーバーにVueプロジェクトをデプロイする

ケース1 vue-cliはvue3プロジェクトをビルドし、プロジェクトをLinuxサーバーにアップロ...

CSS で垂直方向の中央揃えを行う 7 つの方法の詳細なコード例

レイアウトを編集するとき、通常は水平センタリングと垂直センタリングを使用してデザインします。水平セン...

Docker 構成コンテナの場所とヒントのまとめ

Docker の使用に関するヒント1. 停止したDockerコンテナをすべてクリーンアップする停止し...

Vueは小さな検索機能を実装する

この記事の例では、検索機能を実装するためのVueの具体的なコードを参考までに共有しています。具体的な...

MySQL の FIND_IN_SET() と IN の違いを簡単に分析します

以前、あるプロジェクトでMysql FIND_IN_SET関数を使用したことがありますが、非常に便利...

IEのクラッシュバグ

コードをコピーコードは次のとおりです。 <スタイル タイプ="text/css&qu...

初心者向けウェブサイト構築チュートリアルの概要

これら 6 つの記事を書いた後、私は少し混乱し始めました。次にどこに書けばいいのか分かりません。ドメ...

Vue elementUI はツリー構造テーブルと遅延読み込みを実装します

目次1. 成果を達成する2. バックエンドの実装2.1 エンティティクラス2.2 データベース内のデ...

HTML構造化実装方法

DIV+css構造 CSSレイアウトを学んでいますか?まだ純粋な CSS レイアウトを完全に習得でき...

Docker で Node プロジェクトをビルドしてデプロイする方法

目次DockerとはクライアントサイドDocker基本的なDocker操作画像名画像をプルするその他...

Mysqlの同時パラメータ調整の詳細な説明

目次クエリキャッシュの最適化概要クエリプロセスクエリキャッシュ構成クエリキャッシュの無効化メモリ管理...

mysql-8.0.15-winx64 解凍バージョンのインストールチュートリアルと終了する 3 つの方法

1.公式サイトからダウンロードして解凍する参考: 2. 環境変数を設定するMYSQL_HOMEをMy...

CSS3は赤い封筒を振る効果を実現します

赤い封筒の揺れ効果を実現するには要件があります。これまでやったことがないので、記録しておきます。ヘヘ...

MySQL マスタースレーブレプリケーションのいくつかのレプリケーション方法の概要

非同期レプリケーションMySQL レプリケーションは、デフォルトでは非同期です。マスター スレーブ ...