ホームページ >バックエンド開発 >PHPチュートリアル >PHPでロゴ入りQRコードを生成する実装方法

PHPでロゴ入りQRコードを生成する実装方法

墨辰丷
墨辰丷オリジナル
2018-06-04 09:55:213152ブラウズ

この記事では、ロゴ付きの QR コードを生成する 2 つの一般的な実装方法を比較紹介します。必要に応じて選択できます

1。 phpqrcode (php ライブラリ)

2. qrcode.js (javascript ライブラリ)

2. phpqrcode の使用

は php クラス ライブラリのみを使用します。つまり、QR コードの生成はバックグラウンドで動作します。背景にロゴのある 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 を導入し、この js コードを自分で書きます。実行後、QR コードを表示して処理できます

。主に QR コードの真ん中にあるロゴ参照形式で、一般的にローカル画像には 2 つの形式があります。1 つはローカル URL で、もう 1 つは画像を Base64 形式に変換するものです

最初はローカル画像を試しました画像を参照するにはURL形式を使用しますが、jsファイルと同じディレクトリにある画像しか参照できないことがわかり、ローカルURL形式はサポートされていないため、後者の方法を採用しました。

236077703fcea6991e81d5305adbee72

を使用してローカル画像をアップロードして選択し、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
  }
}

を使用してファイルを読み取ります文字列 データ URL 文字列。特別な形式の URL アドレスを使用して、小さなファイルをページに直接読み取ります。この特別な形式はbase64です

3. 2つのクラスライブラリの比較

2つのクラスライブラリ、1つはバックグラウンドで動作し、もう1つはフロントエンドで直接動作します。

phpqrcodeはQRコードを生成してバックグラウンドで動作し、生成された画像はサーバー上に保存されます。通常、生成された QR コードはローカルに保存され、再度サーバーにアクセスして使用されることはほとんどありません。そのため、phpqrcode を使用すると、サーバーに画像が蓄積され、無駄な容量が消費されてしまいます。スペースが必要になり、削除すると追加のコストもかかります。したがって、phpqrcode の使用は、この QR コード生成ツールには適していません。さらに、画像のアップロードには不要なオーバーヘッドも発生します

qrcode.js はフロントエンドで直接動作し、アップロードされた画像はブラウザに直接保存され、QR コードはバックグラウンドの介入なしにフロントエンドで直接生成されるため、不要なオーバーヘッドが削減されます。サーバー上に画像が蓄積され、不必要なスペースを占有することはありません。

要約: 上記がこの記事の全内容です。皆様の学習に役立つことを願っています。

関連する推奨事項:

php

json ファイルを読み取り、書き込み、変更する方法

php

ビデオの指定されたフレームを画像にインターセプトする方法 PHP 正規表現の基本的なエントリ

以上がPHPでロゴ入りQRコードを生成する実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。