Memo

メモ > 技術 > プログラミング言語: PHP > QRコードの読み取り

■QRコードの読み取り
「khanamiryan/php-qrcode-detector-decoder」を使うことで読み取りができる endroid/qr-code も内部ではこれを呼び出しているみたい khanamiryan/php-qrcode-detector-decoder: This is a PHP library to detect and decode QR-codes. This is first and only QR code reader that works without extensions. https://github.com/khanamiryan/php-qrcode-detector-decoder ■実際に導入してみたときのメモ Composerは「Dropbox\サーバ\XAMPP.txt」の「PHPのComposerを使う」の手順で導入済みとする
>composer -V Composer version 2.4.4 2022-10-27 14:39:29 >composer require khanamiryan/qrcode-detector-decoder
以下のコードを作成し、ブラウザからアクセスするとQRコードの読み取り結果が表示される(エラーへの対応は、後述の「トラブル対応」を参照) 具体的には「Test message by QrCode.」「https://refirio.net/」「tel:09012345678」といったテキストを取得できた
<?php require_once __DIR__ . '/vendor/autoload.php'; use Zxing\QrReader; $qrcode = new QrReader('data/test.png'); // QRコードの画像 echo $qrcode->text();
■トラブル対応 GitHubに「PHP >= 8.1」と書かれているものの、PHP8.1環境で実行すると以下のエラーになった
Fatal error: Declaration of Zxing\GDLuminanceSource::isCropSupported() must be compatible with Zxing\LuminanceSource::isCropSupported(): bool in /var/www/html/qrcode-read/vendor/khanamiryan/qrcode-detector-decoder/lib/GDLuminanceSource.php on line 169
PHPUnitのsetUp()を使ったら「must be compatible」とエラーが表示される - Qiita https://qiita.com/ismt7/items/fcc898f38ee161b38ef4 vendor\khanamiryan\qrcode-detector-decoder\lib\GDLuminanceSource.php の169行目を以下のように調整してみる
public function isCropSupported() ↓ public function isCropSupported(): bool
これで読み取り結果を表示できた

Advertisement