1. 使用するクラスライブラリ
1. phpqrcode(phpライブラリ)
2. qrcode.js(JavaScriptライブラリ)
QRコードの生成であるphpクラスライブラリのみを使用します背景にあります。背景にロゴのある QR コードを生成したいので、最初にロゴ画像をサーバーにアップロードする必要があります (アップロードには webuploader を使用しました)
phpqrcode の使用方法:
最初に phpqrcode をダウンロードします: http://phpqrcode .sourceforge.net/
次に、使用する前に必ずphpqrcode.phpファイルを導入してください
$value = $url;//二维码内容 $errorCorrectionLevel = 'L';//设置容错级别 $matrixPointSize = $size;//生成图片大小 QRcode::png($value, 'public_files'.DIRECTORY_SEPARATOR .'code'.DIRECTORY_SEPARATOR .'qrcode.png', $errorCorrectionLevel, $matrixPointSize, 2);//生成二维码图片 无logo $logo = $tar_path;//上传至服务器的logo图片 $QR = 'public_files'.DIRECTORY_SEPARATOR .'code'.DIRECTORY_SEPARATOR .'qrcode.png';//已经生成的原始二维码图 if ($logo !== FALSE) { $QR = imagecreatefromstring(file_get_contents($QR)); $logo = imagecreatefromstring(file_get_contents($logo)); $QR_width = imagesx($QR);//二维码图片宽度 $QR_height = imagesy($QR);//二维码图片高度 $logo_width = imagesx($logo);//logo图片宽度 $logo_height = imagesy($logo);//logo图片高度 $logo_qr_width = $QR_width / 5; $scale = $logo_width/$logo_qr_width; $logo_qr_height = $logo_height/$scale; $from_width = ($QR_width - $logo_qr_width) / 2; imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);}$name = time(); imagepng($QR, 'public_files'.DIRECTORY_SEPARATOR .'code'.DIRECTORY_SEPARATOR .$name.'.png');//输出带logo的二维码图片
3. qrcode.jsの使用
フロントエンドでQRコードを直接生成するには、まずダウンロードする必要があります。 jquery.qrcode.js
qrcode 使い方もとても簡単です:
var length = size*80;//设置二维码大小 length = parseInt(length); $("#code_img").qrcode({ //code_img是一个img标签的id render : "canvas", //设置渲染方式,有table和canvas,使用canvas方式渲染性能相对来说比较好 text : url, //扫描二维码后显示的内容,可以直接填一个网址,扫描二维码后自动跳向该链接 width : length, //二维码的宽度 height : length, background : "#ffffff", //二维码的后景色 foreground : "#000000", //二维码的前景色 src: $('#image').attr('src') //二维码中间的图片});
jquery.qrcode.jsを導入し、実行後にQRコードを表示して処理することができます
。 QRコードの真ん中にあるロゴ参照形式、一般的にローカルの写真を撮る形式があります。1つはローカルURLで、もう1つは画像をbase64形式に変換するものです
最初はローカルURL形式を試しました。画像を参照しようとしたところ、jsファイルと同じディレクトリにある画像しか参照できないことが分かり、ローカルのURL形式はサポートされていなかったので、後者の方法を採用しました。
<input accept="image/*" type="file" id="file_input">
を使用してローカル画像をアップロードして選択し、そのbase64形式
var input = document.getElementById("file_input"); if(typeof FileReader==='undefined'){ input.setAttribute('disabled','disabled');}else{ input.addEventListener('change',readFile,false);} function readFile(){ var file = this.files[0]; if(!/image\/\w+/.test(file.type)){ alert("文件必须为图片!"); return false; } var reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function(e){ $('#image').attr('src',this.result);//image为img标签的id }}
3. 2 つのクラス ライブラリの比較
2 つのクラス ライブラリ、1 つはバックグラウンドで動作し、もう 1 つはフロントエンドで直接動作します。
phpqrcodeはQRコードを生成してバックグラウンドで動作し、生成された画像はサーバー上に保存されます。通常、生成された QR コードはローカルに保存され、再度サーバーに取得して使用されることはほとんどありません。そのため、phpqrcode を使用すると、サーバー上の画像が蓄積され、不要なスペースが占有されます。 、削除すると追加のコストもかかります。したがって、phpqrcode の使用は、この QR コード生成ツールには適していません。さらに、画像のアップロードには不要なオーバーヘッドも発生します
qrcode.js はフロントエンドで直接動作し、アップロードされた画像はブラウザに直接保存され、QR コードはバックグラウンドの介入なしにフロントエンドで直接生成されるため、不要なオーバーヘッドが削減されます。サーバー上に画像が蓄積され、不要なスペースを占有することはありません。
上記は、ロゴ付きの QR コードを生成する (高度な) PHP 方法の概要です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。