PHP QRコード生成ライブラリ「endroid/qr-code」

今回は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



アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム