jQuery キャンバスは QR コード付きのポスターを生成します

jQuery キャンバスは QR コード付きのポスターを生成します

この記事では、jQuery キャンバスを使用して QR コード付きのポスターを生成するための具体的なコードを参考までに紹介します。具体的な内容は次のとおりです。

要件:画像のポップアップ ウィンドウをクリックすると、QR コード付きのポスターが生成されます。

関連する問題が発生しました:

1. 生成された画像はぼやけて不明瞭になります。
2. Apple と Android の携帯電話では、テキストの位置とフォント サイズが異なります。

必要なファイルをインポートする

//jQuery.js で始まる
<script type="text/javascript" src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
//生成された画像がぼやけて不明瞭になる問題を解決します<script src="/images/202010/hidpi-canvas.min.js"></script>

ポスター画像を生成する

<スクリプト>
    // コードを実行する$(function () {

        // ピクセル密度 このコードがないと、生成された画像がぼやける可能性があります function getPixelRatio(context) {
            var backingStore = context.backingStorePixelRatio ||
                context.webkitBackingStorePixelRatio ||
                context.mozBackingStorePixelRatio ||
                コンテキスト.msBackingStorePixelRatio ||
                コンテキスト.oBackingStorePixelRatio ||
                context.backingStorePixelRatio || 1;
            (window.devicePixelRatio || 1) / backingStore を返します。
        };
        //クリックイベント $(".myImg").click(function () {
            $(".dialog").fadeIn();
            var ダイアログSrc = $(this).attr("src")
            var csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content');
            //2. リクエストを送信する$.ajax({
                URL: "xxxx",
                タイプ: "投稿",
                データ型: 'json',
                ヘッダー: {
                    'X-CSRF-TOKEN': csrfToken
                }, //リクエストヘッダーの設定成功: function (res) {
                    var キャンバス = document.createElement("キャンバス");
                    var コンテキスト = canvas.getContext("2d");

                    var 比率 = getPixelRatio(コンテキスト)

                    キャンバスの幅 = 262 * 比率;
                    キャンバスの高さ = 450 * 比率;
                    context.rect(0, 0, キャンバス.幅 * 比率, キャンバス.高さ * 比率);
                    context.fillStyle = "#fff";
                    コンテキストを埋め込む();

                    var myImage2 = 新しいイメージ();
                    //背景画像 myImage2.src = dialogSrc
                    //ターミナルを取得します。var u = navigator.userAgent;
                    var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //Android ターミナル var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //iOS ターミナル myImage2.onload = function () {
                        context.drawImage(myImage2, 0, 0, 262 * 比率, 450 * 比率);
                        //テキスト var text = res.data.company + ',' + res.data.sales;
                        var str = 新しい配列();
                        str = テキストを分割します(",");
                        var 上高 = 0
                        //AppleとAndroidの携帯電話間のテキスト位置とフォントサイズの表示の違いの問題を解決します for (var i = 0; i < str.length; i++) {
                            if (isAndroid) {
                                context.font = "12px Calibri";
                                context.fillText(str[i], 70, 390 + 上高)
        高さ += 20
                            }

                            もしiOSであれば
                                context.font = "20px Calibri";
                                context.fillText(str[i], 140, 450 * 比率 - 120 + 上高)
        高さ += 40
                            }
                        }
                        var myImage = 新しい Image();
                        //QR コード画像 myImage.src = res.data.wxcode
                        myImage.crossOrigin = '匿名';
                        myImage.onload = 関数(){
                            context.drawImage(myImage, 30, 380 * 比率, 48 * 比率, 50 * 比率);
                            var base64 = canvas.toDataURL("image/jpeg", 1.0);
                            var img = document.getElementById('myPoster');
                            img.setAttribute('src', base64);
                        }
                    }
                },
                エラー: 関数 (e) {
                    console.log('ajaxリクエスト例外、例外情報は次のとおりです:', e);
                }
            });
        });
        //ポップアップウィンドウを閉じる$(".close").click(function () {
            $(".dialog").fadeOut();
        })
    });
</スクリプト>

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

以下もご興味があるかもしれません:
  • jQuery と CSS3 をベースに Apple TV ポスターの視差効果を実装する
  • jQueryパッケージを使用して文字列からQRコード画像を生成します
  • jquery.qrcodeを使用してページ上にQRコードを生成し、中国語をサポートします
  • jQuery コンポーネント qrcode を使用して QR コードとアプリケーション ガイドを生成します。
  • jquery.qrcode を使用してカラー QR コード例を生成する
  • JavaScript は中国語の文字とロゴをサポートする QR コードを生成します (jquery.qrcode.js)
  • jQuery プラグイン qrcode はオンラインで QR コードを生成します
  • jQuery.Qrcodeプラグインを使用してクライアント上でQRコードを動的に生成し、カスタムロゴを追加します。
  • jquery.qrcode を使用してオンラインで QR コードを生成する例
  • jQuery は SVG ベクター QR コードを生成します

<<:  Docker実行コンテナが作成状態にある問題についての簡単な説明

>>:  iframe ページで js 関数を呼び出すには js を使用します

推薦する

Linux の操作とメンテナンスの基本システムディスク管理チュートリアル

1. ディスクパーティション: 2. fdiskパーティションディスクが2 TB未満の場合はfdis...

乱数、文字列、日付、検証コード、UUIDを生成するMySQLメソッド

目次乱数を生成する0から1までの乱数を生成する指定された範囲内で乱数を生成します6桁のモバイル認証コ...

Mysql 5.6ではユーザー名とパスワードを変更するメソッドが追加されました

まずMySQLにログインする シェル> mysql --user=root mysqlパスワー...

Vue+SpringBoot で Alipay サンドボックス決済を実装するためのサンプルコード

まず、Alipay サンドボックスから一連のものをダウンロードします。多くのブログで取り上げられてお...

MySQLはPartition関数を使用して水平分割戦略を実装します。

目次1件のレビュー2 水平分割の5つの戦略2.1 ハッシュ2.2 範囲2.3. キー2.4. リスト...

Vueは商品詳細ページの商品タブ機能を実装します

この記事の例では、商品詳細ページ機能を実現するためのVueの商品タブの具体的なコードを参考までに共有...

Node.jsミドルウェアの仕組みの詳細な説明

目次Express ミドルウェアとは何ですか? Expressミドルウェアを作成するための要件Exp...

Dockerコンテナ間のホスト間通信 - オーバーレイベースの実装方法

オーバーレイネットワーク分析組み込みのホスト間ネットワーク通信は、常に Docker の待望の機能で...

ウェブページのカラーマッチング例分析: 緑色のカラーマッチングウェブページ分析

<br />緑は黄色と青(寒色と暖色)の中間の色で、より穏やかな色です。そのため、緑は最...

MySQL 8.0.18 安定版がリリースされました! 予想通りハッシュ結合が実装されました

MySQL 8.0.18 安定版 (GA) が昨日正式にリリースされ、Hash Join も期待通り...

VMware 仮想マシン (CentOS7 イメージ) を使用して Linux をインストールする

1. VMwareのダウンロードとインストールリンク: https://www.jb51.net/s...

Linux で crontab を使用してスケジュールされたタスクを追加する方法

序文Linux システムはシステム サービス crond によって制御されます。 Linux システ...

MySQL 8.0 でリモートアクセス権限を設定する方法

前回の記事では、MySQL パスワードをリセットする方法を説明しました。一部の学生から、データベース...

nginx設定ファイルの場所を見つける方法の詳細な説明

よく知らないサーバーの場合や、かなり前にインストールした場所を忘れてしまった場合、構成ファイルの場所...

Nginx リバース プロキシを使用してクロスドメイン問題を解決する方法の詳細な説明

質問前回のクロスドメイン リソース共有に関する記事では、ドメイン間で Cookie を送信する場合、...