PHPのライブラリ(chillerlan/php-qrcode)を使ってQRコード®を作成しました。
本記事の環境
ホストOS:Windows10 Pro 64bit 8GB
ゲストOS:Red Hat Enterprise Linux release 8.3 (Ootpa)
Oracle VM VirtualBox:6.0.4a
vagrant:Vagrant 2.2.14
Apache:2.4.37
PHP:PHP 7.4.15
Tera Term:4.105
Composer:Composer version 2.0.8 2020-12-03 17:20:38
chillerlan/php-qrcode:4.3.4
Google Chrome:96.0.4664.110
コマンドプロンプト
ホストOS側に実ソース
手順1(ライブラリ導入)
- Tera TermでゲストOSに接続する。
- 作業用ディレクトリを作成する。
- 作業用ディレクトリ配下でディレクトリ作成コマンドを実施する。
mkdir -p php-qr-code-generator \
php-qr-code-generator/src/QR/{Image,Options} \
php-qr-code-generator/public/img
- ディレクトリを移動する。
cd php-qr-code-generator
- composerを使ってライブラリを取得する。
composer require chillerlan/php-qrcode
手順2(ソースコード作成~動作確認)
- ソースコードを書く。(サンプルは以下に載せています。)
- 作業用ディレクトリのパスを指定してもいいし、作業用ディレクトリを実行用パスにコピーしてもいい。
- ブラウザ上にQRコード®が表示されていることを確認する。
- QRコード®を読み込んで、サイトへ遷移できることを確認する。
成果物(ソースコード(制御側))
// 定義(必要に応じてパスを変更してください。)
use chillerlan\QRCode\QRCode;
use chillerlan\QRCode\QROptions;
(中略)
// 実処理
require_once([実行用基点ディレクトリ] . '/php-qr-code-generator/vendor/autoload.php');
$options = new QROptions(
[
eccLevel' => QRCode::ECC_L,
outputType' => QRCode::OUTPUT_IMAGE_PNG,
version' => 5,
imageTransparent' => false,
]
);
$qrcode = (new QRCode($options))->render('https://[QRコード®を作成するURL]');
- eccLevel:QRコードの欠損を何%まで許容するか。
- L ・・・ 7%までなら欠けてもOK
- M ・・・ 15%までなら欠けてもOK
- Q ・・・ 25%までなら欠けてもOK
- H ・・・ 30%までなら欠けてもOK
- outputType:出力画像タイプ(SVG、PNG、JPG、GIF、、、)
- version:QRコードの粒度、細かさが変わる。
- imageTransparent:透過するかどうか。(true:透過する、false:透過しない)
- 他にできそうなこと:QRの色指定、サイズ指定、QRにロゴを付ける。
成果物(ソースコード(画面側))
<img src='<?= $qrcode ?>' alt='QR Code' width='800' height='800'>
参考
https://chillerlan.github.io/php-qrcode/classes/chillerlan-QRCode-QRCode.html
https://www.twilio.com/blog/create-qr-code-in-php-jp
https://blog.capilano-fw.com/?p=2140