この記事では、jQuery キャンバスを使用して QR コード付きのポスターを生成するための具体的なコードを参考までに紹介します。具体的な内容は次のとおりです。 要件:画像のポップアップ ウィンドウをクリックすると、QR コード付きのポスターが生成されます。 関連する問題が発生しました: 1. 生成された画像はぼやけて不明瞭になります。 必要なファイルをインポートする //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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Docker実行コンテナが作成状態にある問題についての簡単な説明
>>: iframe ページで js 関数を呼び出すには js を使用します
1. はじめに数日前、開発仲間から、フィールドを同じ値に更新すると binlog が記録されるかどう...
目次1. 概要1.1 厳密モードとは何ですか? 1.2 厳密モードの目的2. 厳密モードを有効にする...
以前、写真が与えられ、その写真スタイルに基づいてフォームを作成するという課題に遭遇しました。しかし、...
Nexus は RestApi を提供していますが、一部の API はまだ Groovy と組み合わ...
フローティング、フローティング埋め込み div、配置、フレックスという 4 つの一般的な方法と原則を...
目次1. メモリモデルとランタイムデータ領域2. マインドマップと凡例3. オブジェクトはJVMから...
プロジェクトの展開中に遭遇した落とし穴Zhihudemo を展開する際、Jenkins などの自動展...
ルートパラメータ、ルートナビゲーションガード: ページが戻ったときに検索結果を保持する需要シナリオ:...
Git 入門Git は、Linux(R) カーネル開発の管理を支援するために 2005 年に Lin...
Dockerのインストール カール -fsSL https://get.docker.com -o...
はじめに: すべてのブラウザには、「ユーザー エージェント スタイル シート」と呼ばれる、すべてのペ...
Web ページを作成するときに、クールでスムーズなドロップダウン メニューが必要になることがあります...
えーっと、名前はただの推測です 2333序文これは練習用の CSS デモです。何か間違っている点があ...
以前は、Web ページのプリンタ対応バージョンを作成するには、印刷したときに見栄えがよくなるようにレ...
多くの Web サイト デザイナーが犯す最も一般的な間違いは、Web ページが IE で正常に表示さ...