PHPでQRコードを生成してみた

2023年7月29日

最近はスマホ前提のホームページが増えてきました。
それにともない、QRコードを利用するケースも増えてきました。
スマホでURLを入力するのは大変だからです。

今回も、PHPからQRコードを作成する必要があり、そのやり方を調べてみました。
忘備録として記録いたします。

PHPからQRコードを作成する方法は主に2種類のやり方があります。

PHPでQRコードを作成するにはどうすればいいんだろう?

以前TCPDFでQRコードを作成したことはありましたが、あれはTCPDFライブラリのQRコードを作成関数を使用してQRコードを作成しました。

なので、通常のPHPでは使えません。

というわけでググって調べたところ次の2つの方法があることがわかりました。

  • 外部APIを使用する
  • ライブラリをダウンロードして使う

手軽そうなのはAPIを使用する方法ですが、色々調べるとめんどくさいことがわかりました。
なので、ライブラリをダウンロードして使用する方法でやってみることにしました。

TCPDFもライブラリダウンロード式なので、このほうがやりやすいと感じたためです。

実際に作ってみたものがこちら

実際に作ってみたサンプルがこちらです。
PHPからQRコードを作成するサンプル

QRコードを読み取ると、現在時間が読み取れます。

やってみたら意外とあっさりできました。
そのやり方を以下に記載します。

(1)ライブラリをダウンロードする

まずはライブラリを以下のサイトよりダウンロードします。

PHP QR Code

ただ、これだけだとどこからダウンロードすればよいかわからないので、以下に具体的なダウンロード方法を記載します。

私も実際にやってみると、どこをクリックすればダウンロードできるのか迷いながらでした。

トップページからダウンロードメニューをクリック

releasesをクリック

最新バージョンをクリックするとダウンロードがはじまります

最新のZIPファイル名をクリックし、4~5秒ほど待つとダウンロードが始まります。

QRコードライブラリの使い方

フォルダ構成

QRコードライブラリをダウンロードしたら、解凍して該当のフォルダにコピーします。
以下のような構成になります。

サンプルソース

今回のサンプルソースは以下のものになります。
現在時刻を取得し、QRコードのテキストとしてセットしています。

実際にQRコードを作成している部分

QRコードライブラリのPNG関数を使用してQRコードを作成しています。
各パラメータの意味は次の通りです。

$qr->png(①QRコードテキスト, ②画像を保存するパス, ③QRコード誤り訂正レベル, ④画像サイズ);

①QRコードテキストQRコード化するテキストを指定します。
たいていの場合URLをセットして使用します。
②画像を保存するパス画像を保存するパスを設定します。
今回の例だと”./qr/sample.png”と指定しています。
ちなみにパスを「jpg」とした場合、jpg画像が生成されます。
③QRコード誤り訂正レベルQRコードの誤り訂正レベルを指定します。
以下のコードが指定できます。
QR_ECLEVEL_L ・・誤り訂正レベル7%
QR_ECLEVEL_M・・誤り訂正レベル15%
QR_ECLEVEL_Q ・・誤り訂正レベル25%
QR_ECLEVEL_H ・・誤り訂正レベル30%
特にこだわりがなければ、「QR_ECLEVEL_M」でOKです。
④画像サイズ生成する画像サイズを整数で指定します。
サンプルでは12を指定しています。
設計に合わせてサイズを調整します。
ちなみに小数点を入れるとエラーになりました。

使う上でのポイント

QRcodeライブラリのpng関数は、QRコード画像を指定パスに保存する関数です。
なので、保存した画像をどのように使うかは別の処理になります。

プログラムの冒頭でQRコード画像を削除しているのは、キャッシュ対策ですが精密にやるならば多ファイル名にタイムスタンプをつけるなど、毎回ファイル名が変わるようにするほうが確実です。

PHPでQR生成ができると汎用制がぐんと上がります。

PHPから画像を生成するのは、難易度が高い印象があり敬遠しがちです。
ですが、QRコードはスマホでの手入力を減らすツールとしてとても有効です。

フリーツールでQRコードを作成するものはたくさんあります。
でも、必要なQRコードをシステムが自動で生成してくれたら、フリーツールでQRコードを作成する手間が一つ減ります。

今回も良い勉強になりました。

本記事がお役に立てば幸いです。

今回のレポートは以上です。
読んでいただいてありがとうございました。


ホームページに関するお悩み事やご相談事がございましたら私どもまでご連絡ください。 鋭意ご対応申し上げます。
ホームページのご提案もさせていただいております