プログラムからQRコードを作成する

Web系やっていると、たまにQRコードにURLを埋め込んだり、ちょっとしたユーザー情報を付加したりすることがあります。

QRコードの作り方はいろいろあるんですが、、とりあえずサッと試せるのものをまとめます。

スポンサーリンク

qrencodeコマンド

インストール

#コマンドのインストール
dnf install -y qrencode

実行サンプル

サンプル1

/usr/bin/qrencode -o holiday-programer1.png http://holiday-programmer.net/
  • QRコードのテキストを”http://holiday-programmer.net/”とする
  • カレントディレクトリに”holiday-programer1.png”という画像ファイルで出力する

サンプル2

/usr/bin/qrencode -l H -o holiday-programer2.png http://holiday-programmer.net/
  • QRコードのテキストを”http://holiday-programmer.net/”とする
  • カレントディレクトリに”holiday-programer2.png”という画像ファイルで出力する
  • 誤り訂正レベルを”H”(最高)とする

誤り訂正レベルを変更すると、QRコードの一部が読み取れなくても保管できるように生成されるため、ファイルサイズ、画像サイズが大きくなる

フリーのソースqr_img.php

インストール

作成者様のサイトからダウンロード、任意のディレクトリに解凍して配備します。

例えば、/var/www/html/qr_img0.50j

実行サンプル

サンプル1

<html lang="ja">
	<body>
		<img src="./qr_img0.50j/php/qr_img.php?d=http://holiday-programmer.net/">
	</body>
</html>
  • QRコードのテキストを”http://holiday-programmer.net/”とする

サンプル2

<html lang="ja">
	<body>
		<img src="./qr_img0.50j/php/qr_img.php?e=h&d=http://holiday-programmer.net/">
	</body>
</html>
  • QRコードのテキストを”http://holiday-programmer.net/”とする
  • 誤り訂正レベルを”H”(最高)とする

GDライブラリがなくてエラーする場合

Fatal error: Uncaught Error: Call to undefined function ImageCreate() in /var/www/html/qr_img0.50j/php/qr_img.php:609 Stack trace: #0 {main} thrown in /var/www/html/qr_img0.50j/php/qr_img.php on line 609

上記のようなエラーが発生した場合、PHPにGDライブラリが存在しないので追加でインストールをします。

GDのインストール
dnf install php80*gd
============================================================================================================================================================================================================
 パッケージ                                             アーキテクチャー                          バージョン                                              リポジトリー                                 サイズ
=============================================================================================================================================================================================================
インストール:
 php80-php-gd                                           x86_64                                    8.0.14-1.el8.remi                                       remi-safe                                     96 k
依存関係のインストール:
 environment-modules                                    x86_64                                    4.5.2-1.el8                                             baseos                                       421 k
 fribidi                                                x86_64                                    1.0.4-8.el8                                             appstream                                     89 k
 gd3php                                                 x86_64                                    2.3.3-4.el8.remi                                        remi-safe                                    146 k
 graphite2                                              x86_64                                    1.3.10-10.el8                                           appstream                                    122 k
 harfbuzz                                               x86_64                                    1.7.5-3.el8                                             appstream                                    295 k
 jbigkit-libs                                           x86_64                                    2.1-14.el8                                              appstream                                     55 k
 libXpm                                                 x86_64                                    3.5.12-8.el8                                            appstream                                     58 k
 libimagequant                                          x86_64                                    2.12.5-1.el8                                            epel                                          63 k
 libjpeg-turbo                                          x86_64                                    1.5.3-12.el8                                            appstream                                    157 k
 libraqm                                                x86_64                                    0.7.0-4.el8                                             epel                                          19 k
 libtiff                                                x86_64                                    4.0.9-20.el8                                            appstream                                    188 k
 libwebp                                                x86_64                                    1.0.0-5.el8                                             appstream                                    272 k
 php80-php-common                                       x86_64                                    8.0.14-1.el8.remi                                       remi-safe                                    728 k
 php80-runtime                                          x86_64                                    1.0-3.el8.remi                                          remi-safe                                    1.1 M
 scl-utils                                              x86_64                                    1:2.0.2-14.el8                                          appstream                                     47 k
 tcl                                                    x86_64                                    1:8.6.8-2.el8                                           baseos                                       1.1 M

GD拡張ファイルの配備
ln -s  /opt/remi/php80/root/usr/lib64/php/modules/gd.so /usr/lib64/php/modules/gd.so

php.iniの編集
vim /etc/php.ini
extension=gd.so ※👈追加

php-fpmのrestart(環境によって違うかも)

systemctl restart php-fpm

※手元の環境はphp-fpmだったけど、環境によってはhttpdかもしれない

まとめ

デフォルトのまま使う場合、

  • qrencodeは画像ファイルを作成する
  • img_qr,phpは画像を出力する(保存せず表示)

という違いがあるので、軽く使うなら使い道次第で選んでいいかもしれない。

スポンサーリンク
おすすめの記事