2: 2025-06-27 (金) 14:56:52 yuji  |
現: - no date -  |
- | * PHPでQRコードを作成 [#z8ba078b] | |
- | PHPでQRコードをつくるにはいくつかの方法がある。 | |
| | | |
- | 今回は,chillerlan/php-qrcodeを使用してみる。 | |
- | | |
- | | |
- | ** chillerlan/php-qrcodeパッケージをインストール [#m876c01b] | |
- | composerでパッケージをインストールする。 | |
- | > composer require chillerlan/php-qrcode | |
- | | |
- | 現在では,PHP 7.2以上が必要になっている。 | |
- | | |
- | PHP 5.6+なんかで使用する場合は,以下のようにして古いバージョンをインストールする。 | |
- | > composer require chillerlan/php-qrcode:1.0.8 | |
- | | |
- | ** 基本的な使い方 [#ffee2a7c] | |
- | #code(php,,nonumber){{ | |
- | $text = 'http://yueno.net'; | |
- | $qrcode = new \chillerlan\QRCode\QRCode(); | |
- | $qrcode->render($text, 'nalux.png'); | |
- | }} | |
- | | |
- | QRCodeのインスタンスを作成して,render()を呼ぶだけ。 | |
- | | |
- | ただし,PHP 5.6+のバージョンではrender()を使って画像を保存することは出来ないので,以下のようにする必要がある。 | |
- | #code(php,,nonumber){{ | |
- | $text = 'http://yueno.net'; | |
- | $qrcode = new \chillerlan\QRCode\QRCode(); | |
- | $base64_data = $qrcode->render($text); | |
- | $base64_data = explode(';', $base64_data)[1]; | |
- | $base64_data = explode(',', $base64_data)[1]; | |
- | $data = base64_decode($base64_data); | |
- | file_put_contents($path, 'nalux.png'); | |
- | }} | |
- | | |
- | //実際に作成できたQRコード。 | |
- | //#ref(nalux.png) | |
- | | |
- | 背景が透過になっている。透過にしたくない場合,はオプションimageTransparentをfalseにする。 | |
- | | |
- | ** オプション [#t96ab6e8] | |
- | chillerlan/php-qrcodeでオプションを使うには,QROptionsというクラスを使う。 | |
- | #code(php,,nonumber){{ | |
- | $options = new \chillerlan\QRCode\QROptions([ | |
- | // ここにオプション値 | |
- | 'version' => 5, | |
- | 'imageTransparent' => false, | |
- | 'scale' => 3 | |
- | ]); | |
- | | |
- | $path = storage_path('qrcode_2.png'); | |
- | $text = 'http://yueno.net'; | |
- | $qrcode = new \chillerlan\QRCode\QRCode($options); | |
- | $qrcode->render($text, $path); | |
- | }} | |
- | | |
- | //オプションをつけて作成したQRコード。 | |
- | //#ref(yuenonet.png) | |
- | | |
- | *** version [#d01f265a] | |
- | セルの個数。1〜40。~ | |
- | | |
- | *** eccLevel [#wbd79162] | |
- | 修復タイプを決めるオプション。設定できる値は次の4つです。 | |
- | - QROptions::ECC_L~ | |
- | - QROptions::ECC_M~ | |
- | - QROptions::ECC_Q~ | |
- | - QROptions::ECC_H~ | |
- | | |
- | *** addQuietzone [#za7fede8] | |
- | 余白をつけるかどうか。 | |
- | | |
- | *** quietzoneSize [#y72f5689] | |
- | 余白のサイズ。 | |
- | | |
- | *** outputType [#hfe1bb75] | |
- | 出力する画像タイプです。 | |
- | - QROptions::OUTPUT_IMAGE_PNG ・・・ png~ | |
- | - QROptions::OUTPUT_IMAGE_JPG ・・・ jpg~ | |
- | - QROptions::OUTPUT_IMAGE_GIF ・・・ gif~ | |
- | | |
- | *** scale [#sfbd15aa] | |
- | QRコードのサイズです。 | |
- | | |
- | *** imageTransparent [#c35b99e8] | |
- | 背景を透過にするかどうか。 | |
- | | |
- | デフォルトでtrueなので背景を白くしたい場合はfalseを指定しましょう。 | |