PHP QRコード生成ライブラリ「endroid/qr-code」
- 2021年12月09日
- 技術情報
今回はPHPでQRコードを生成するためのライブラリ「endroid/qr-code」を紹介したいと思います。
endroid/qr-code
https://github.com/endroid/qr-code
endroid/qr-codeのインストール方法
インストールはComposer(https://getcomposer.org/)を使用して以下のコマンドを実行することで簡単におこなうことができます。
composer require endroid/qr-code

QRコード生成のサンプルコード
今回は例として「GIGAS JAPAN」という文字列をQRコード化して出力します。
<?php
namespace App\Http\Controllers\;
use Illuminate\Http\Request;
use Endroid\QrCode\Builder\Builder;
use Endroid\QrCode\Encoding\Encoding;
use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelHigh;
use Endroid\QrCode\Label\Alignment\LabelAlignmentCenter;
use Endroid\QrCode\Label\Font\NotoSans;
use Endroid\QrCode\RoundBlockSizeMode\RoundBlockSizeModeMargin;
use Endroid\QrCode\Writer\PngWriter;
use Endroid\QrCode\Color\Color;
class GenerateQrController
{
public function index(Request $req)
{
$result = Builder::create()
->writer(new PngWriter())
->writerOptions([])
->data("GIGAS JAPAN")
->encoding(new Encoding('UTF-8'))
->errorCorrectionLevel(new ErrorCorrectionLevelHigh())
->size(300)
->margin(10)
->roundBlockSizeMode(new RoundBlockSizeModeMargin())
->build();
header('Content-Type: '.$result->getMimeType());
echo $result->getString();
}
}
上記のコードで出力したQRコードです。

スマホのQRコードスキャンアプリ(https://www.denso-wave.com/ja/system/qr/product/reader.html)を使用して出力したQRコードをスキャンしたところ、正常に読み取れることが確認できました。

QRコードの出力バリエーション
Builder::create()のメソッドチェーンに以下のようなメソッドを追加することで
QR出力に以下のような出力バリエーションを加えることが可能です。
■QRコードの真ん中に画像を表示したい
以下のメソッドで真ん中に表示する画像ファイルのstorage_pathを設定します。
->logoPath(storage_path(‘qr_base_img/center_img.png’))
■QRコードの下にテキストラベルを表示したい
出力テキストやフォントサイズ、表示位置などを下記のように設定します。
->labelText(‘GIGAS JAPAN’)
->labelFont(new NotoSans(20))
->labelAlignment(new LabelAlignmentCenter())
■QRコードに背景色をつけたい
RGBカラーで背景色を指定することが可能です。
->backgroundColor(new Color(255,255,102))
以上の設定を追加して出力したQRコードです。

こちらもスマホのQRコードスキャンアプリで正常に読み取れることが確認できました。

木曜日担当:nishida
nishida at 2021年12月09日 10:00:00