5分で出来る!PHPでQRコードを生成する方法

プログラム
スポンサーリンク

つい先日 PHPでQRコードを生成する機会があったので少し調べてみました。実装は大変かと思っていましたが、ありがたいことに QRコードを生成する PHPライブラリはいくつも公開されていて、簡単に QRコードを生成することができそうです。そこで今回は、endroid/qr-code を使って PHPでQRコードを生成する方法をまとめてみました。

Composer のインストール

endroid/qr-code のインストールに Composer を使いますので、インストールしておきます。

公式サイトの Download Composer ページ に記載されてる以下のコマンドを実行して Composer をダウンロードします。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

「composer.phar」というファイルができますので、パスが通った適当な場所に移動して「composer」にリネームします。

sudo mv composer.phar /usr/local/bin/composer

実行権限をつけます。

sudo chmod 755 /usr/local/bin/composer

composer が実行できることを確認します。

composer -V
(下のような表示があればOKです)
Composer version 1.9.1 2019-11-01 17:20:17

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

テスト用に適当なディレクトリを作成して、そこに移動しておきます。

mkdir qrtest
cd qrtest/

composer で endroid/qr-code をインストールします。(「インストール」とは言っても endroid/qr-code と依存するライブラリがダウンロードされるだけです)

composer require endroid/qr-code

以下のファイルやディレクトリがダウンロードされます。

composer.json composer.lock vendor

QRコードの生成

QRコードの生成用の PHPファイルを作成します。下の場合は文字列「Life is too short to be generating QR codes」を埋め込んだ QRコードが生成されます。

sample.php

<?php
require_once(__DIR__ . '/vendor/autoload.php');

use Endroid\QrCode\QrCode;

$qrCode = new QrCode('Life is too short to be generating QR codes');

header('Content-Type: '.$qrCode->getContentType());
echo $qrCode->writeString();

確認のため PHPのビルトインWebサーバーを起動します。(Ctrl-Cで終了できます)

php -S localhost:8000

ブラウザで http://localhost:8000/sample.php にアクセスすると生成された QRコードが表示されます。

表示された QRコードを読み取って「Life is too short to be generating QR codes」が表示されていればOKです。

読み取ったQRコード

おわりに

よく使いそうなオプションをまとめてみました。これ以外にもQRコードの誤り訂正レベルなども指定できます。詳しくは endroid/qr-code/README.md をご参照ください。

<?php
require_once(__DIR__ . '/vendor/autoload.php');

use Endroid\QrCode\QrCode;

// QRコードに埋め込む文字列の指定
$qrCode = new QrCode('https://blog.apar.jp/');

// QRコードのサイス(単位:ピクセル)
$qrCode->setSize(100);

// QRコードの周囲の余白(単位:ピクセル)
$qrCode->setMargin(10);

// QRコードの色(RGBAで指定)
$qrCode->setForegroundColor(['r' => 239, 'g' => 239, 'b' => 239, 'a' => 0]);

// 背景の色(RGBAで指定)
$qrCode->setBackgroundColor(['r' => 52, 'g' => 81, 'b' => 163, 'a' => 0]);

// QRコードの中央に配置するロゴファイルのパス
$qrCode->setLogoPath('logo.png');

// ロゴサイズ(単位:ピクセル)大きくしすぎるとQRコードが読み取りできないので注意
$qrCode->setLogoSize(20, 20);

header('Content-Type: '.$qrCode->getContentType());
echo $qrCode->writeString();

コメント

タイトルとURLをコピーしました