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 を使用します

推薦する

検証例 MySQL | 同じ値を持つフィールドを更新すると、binlog に記録されます

1. はじめに数日前、開発仲間から、フィールドを同じ値に更新すると binlog が記録されるかどう...

JavaScript strictモードの概要 strictを使用する

目次1. 概要1.1 厳密モードとは何ですか? 1.2 厳密モードの目的2. 厳密モードを有効にする...

HTML でフォームを中央揃えにする

以前、写真が与えられ、その写真スタイルに基づいてフォームを作成するという課題に遭遇しました。しかし、...

NexusはAPIを使用して操作します

Nexus は RestApi を提供していますが、一部の API はまだ Groovy と組み合わ...

両側にCSS固定レイアウト、中央に適応レイアウトを実装

フローティング、フローティング埋め込み div、配置、フレックスという 4 つの一般的な方法と原則を...

JVMシリーズのメモリモデルの詳細な説明

目次1. メモリモデルとランタイムデータ領域2. マインドマップと凡例3. オブジェクトはJVMから...

CentOS7 で jar アプリケーションの起動を設定する方法

プロジェクトの展開中に遭遇した落とし穴Zhihudemo を展開する際、Jenkins などの自動展...

Vueルーティングはページステータスを復元する操作メソッドを返します

ルートパラメータ、ルートナビゲーションガード: ページが戻ったときに検索結果を保持する需要シナリオ:...

Ubuntu Linux に Git と GitHub をインストールして使用する

Git 入門Git は、Linux(R) カーネル開発の管理を支援するために 2005 年に Lin...

CSS リセットスタイルリセットの実装例

はじめに: すべてのブラウザには、「ユーザー エージェント スタイル シート」と呼ばれる、すべてのペ...

jQueryはドロップダウンメニューのスライド効果を実現します

Web ページを作成するときに、クールでスムーズなドロップダウン メニューが必要になることがあります...

CSS 読み込み効果の実装 パックマン

えーっと、名前はただの推測です 2333序文これは練習用の CSS デモです。何か間違っている点があ...

XHTML CSS ページをプリンタ ページに変換する

以前は、Web ページのプリンタ対応バージョンを作成するには、印刷したときに見栄えがよくなるようにレ...

ウェブページ作成時に標準 HTML コードを使用する際のポイント

多くの Web サイト デザイナーが犯す最も一般的な間違いは、Web ページが IE で正常に表示さ...