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は画像を出力する(保存せず表示)
という違いがあるので、軽く使うなら使い道次第で選んでいいかもしれない。