LoginSignup
0
0

More than 1 year has passed since last update.

【PHP】endroid/qr-codeライブラリを使用したQRコード生成方法

Last updated at Posted at 2022-09-03

QRコード生成はgoogleAPIを使用する方法等ありますが、外部リンクを読み込む方法を採用するのはAPIの仕様変更やサービス停止を考慮すると危険です。

そこでPHPのライブラリ「endroid/qr-code」を使用したQRコード生成の方法を紹介します。

※ここではCakePHP3で実際に導入した方法を紹介します。

「endroid/qr-code」のインストール

Composerを使用して「endroid/qr-code」 のインストール を行います。

※Composerはインストール済みという想定で進めます。

composer.jsonのあるディレクトリで次のコマンドを実行

terminal
composer require endroid/qr-code

以上で「endroid/qr-code」 ライブラリの導入が完了です。

「endroid/qr-code」の使用方法

ライブラリの導入が完了したので、ここからは実際にQRコードを表示するまでの例を紹介します。

GitHubのREADMEに載っているコードを参考にしつつ、次のようなsample.phpを作成します。

phpファイル
<?php
require_once(__DIR__ . '/vendor/autoload.php');

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;

// URLをセット
$url = 'https://www.qrcode-test.com/'

// QrCodeオブジェクトを生成して各種オプションを設定
$qrCode = QrCode::create($url)
            ->setEncoding(new Encoding('UTF-8'))
            ->setErrorCorrectionLevel(new ErrorCorrectionLevelLow())
            ->setSize(150)
            ->setMargin(25)
            ->setRoundBlockSizeMode(new RoundBlockSizeModeMargin())
            ->setForegroundColor(new Color(0, 0, 0));

// PngWriterオブジェクトを生成し、QrCodeオブジェクトの情報を書き込む
$writer = new PngWriter();
$result = $writer->write($qrCode);

// Base64でエンコード
$qrCodeBase64 = base64_encode($result->getString());

// QRコードのimgタグを生成してスタイル属性でサイズを設定
$qrCodeImg = '<img src="data:image/gif;base64,'.$qr_code_base64.'" alt="QR Code" style="width:200px;">';

// QRコードを画面に表示
echo $qrCodeImg;

?>

作成したsample.phpにブラウザでアクセスすると以下のようなQRコードが表示されます。

image.png

cakephp3で実際に導入したときには、wordpressのプラグインとcakeの内部APIでデータを行き来する必要があったため、Base64でエンコードしてからimgタグを生成しています。

※上記で紹介した方法の他にも出力の方法があるようなので、用途に合わせて変更してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0