Laravel QrCode は Bacon/BaconQrCode を元に作られた 人気のあるLaravelフレームワークで簡単に使う事のできるラッパーです。Laravelユーザーになじみのある使い方ができるように開発されました。
この文書の翻訳を手伝ってくれるアラビア語、スペイン語、フランス語、韓国語、日本語を話すユーザーを探しています。 翻訳が可能な場合はプルリクエストを作成してください。
We are looking for users who speak Arabic, Spanish, French, Korean or Japanese to help translate this document. Please create a pull request if you are able to make a translation!
v2とv3からのアップデートは、composer.json
ファイル内のバージョン指定を~4
に変更してください。
PNG形式の画像を生成する場合は、必ずimagick
PHP拡張をインストールしてください。
4.1.0を作成するときのミスで、後方互換性が失われる変更がmasterブランチに入りました。
generate
メソッドは現在はIlluminate\Support\HtmlString
のインスタンスを返します。 詳細は https://github.com/SimpleSoftwareIO/simple-qrcode/issues/205 を参照してください。
v3での読み込みに関する問題を引き起こすLaravelファサードの問題がありました。 この問題を解決するためには、後方互換性が失われる変更を加える必要があり、v4がリリースされるに至った経緯があります。 v2からのアップグレードの場合は既存コードの変更は必要ありません。 以下の説明はv3ユーザー向けです。
全てのQrCode
ファサードへの参照は以下のように変更する必要があります:
use Manoar\QrCode\Facades\QrCode;
composer require simplesoftwareio/simple-qrcode "~4"
を実行してパッケージを追加します。
Laravelが自動的に必要なパッケージをインストールします。
このパッケージの主なアイテムは 画面に表示する機能です。 カスタマーはコードをスキャンするだけで 画面に戻ることが出来ます。以下の内容を footer.blade.php に追加しました。
<div class="visible-print text-center">
{!! QrCode::size(100)->generate(Request::url()); !!}
<p>スキャンして元のページに戻ります</p>
</div>
ユーザーがすばやくスキャンできるように、電子メールの中にQRコードを埋め込むことができます。 以下はLaravelでこれを行う方法の例です。
// Bladeテンプレート内で以下のように書きます
<img src="{!!$message->embedData(QrCode::format('png')->generate('Embed me into an e-mail!'), 'QrCode.png', 'image/png')!!}">
使い方はとても簡単です。 最も基本的な構文は次のとおりです。
QrCode::generate('Make me into a QrCode!');
これで「Make me into a QrCode!」というQRコードが作成されます。
generate
はQRコードを生成するのに使われます。
QrCode::generate('Make me into a QrCode!');
要注意: チェーン内で使用する場合は、このメソッドを最後に呼び出す必要があります。
generate
はデフォルトで SVG イメージ文字列を返します。
Laravel Blade に以下の様に書くことで モダンなブラウザに表示することができます。
{!! QrCode::generate('Make me into a QrCode!'); !!}
generate
メソッドの第二引数はQrCodeを保存するパスとファイルネームです。
QrCode::generate('Make me into a QrCode!', '../public/qrcodes/qrcode.svg');
(string$ format)
QrCode Generator のデフォルトフォーマットはSVGイメージです。
要注意:
format
メソッドはsize
、color
、backgroundColor
、margin
のような他のフォーマットオプションの前に呼ばれなければなりません。
現在PNG、EPS、およびSVGの 3つのフォーマットがサポートされています。 フォーマットを変更するには、次のコードを使用します。
QrCode::format('png'); //Will return a PNG image
QrCode::format('eps'); //Will return a EPS image
QrCode::format('svg'); //Will return a SVG image
(int $size)
QrCode GeneratorはデフォルトでQRコードを作成するためにピクセルで可能な最小サイズを返します。
size
メソッドを使うことでQrCodeのサイズを変えることができます。 次の構文を使用して、必要なサイズをピクセル単位で指定します。
QrCode::size(100);
(int $red, int $green, int $blue, int $alpha = null)
要注意 色を変えるときには注意してください。QrCodeの読み込みが難しくなる 色が有ります。
すべての色はRGB (Red Green Blue)で表現する必要があります。 次のようにしてQrCodeの色を変更できます:
QrCode::color(255,0,255);
背景色の変更もサポートされており、同じ方法で表現できます。
QrCode::backgroundColor(255,255,0);
(int $red, int $green, int $blue, int $alpha = null)
backgroudColor
メソッドを呼び出すことでQRコードの背景色を変更できます。
QrCode::backgroundColor(255, 0, 0); // 赤が背景色のQRコード
QrCode::backgroundColor(255, 0, 0, 25); // 透明度25%で赤が背景色のQRコード
(int $startRed, int $startGreen, int $startBlue, int $endRed, int $endGreen, int $endBlue, string $type)
gradient
メソッドを呼び出すことでQRコードにグラデーションを適用することができます。
以下のグラデーションタイプがサポートされています:
タイプ | 例 |
---|---|
vertical |
![]() |
horizontal |
![]() |
diagonal |
![]() |
inverse_diagonal |
![]() |
radial |
![]() |
(int $eyeNumber, int $innerRed, int $innerGreen, int $innerBlue, int $outterRed = 0, int $outterGreen = 0, int $outterBlue = 0)
eyeColor
メソッドを呼び出すことで切り出しシンボルの色を変更することもできます。
QrCode::eyeColor(0, 255, 255, 255, 0, 0, 0); // シンボル番号`0`の色を変更します
シンボル番号 | 例 |
---|---|
0 |
![]() |
1 |
![]() |
2 |
![]() |
(string $style, float $size = 0.5)
ブロックのスタイルはstyle
メソッドを使用してsquare
、dot
、round
に変更できます。
これはQRコードの内部のブロックを変更します。
2つめのパラメーターはdot
とround
の大きさを指定します。
QrCode::style('dot'); // `dot`スタイルに変更
スタイル | 例 |
---|---|
square |
![]() |
dot |
![]() |
round |
![]() |
(string $style)
切り出しシンボルのスタイルはeye
メソッドを使用してsquare
、circle
に変更できます。
QrCode::eye('circle'); // `circle`スタイルの切り出しシンボルに変更
スタイル | 例 |
---|---|
square |
![]() |
circle |
![]() |
(int $margin)
QRコード周辺のマージンを変更する機能もサポートされています。 次の構文を使用してマージンを指定します:
QrCode::margin(100);
(string $errorCorrection)
エラー訂正レベルの変更は簡単です。次のようにします:
QrCode::errorCorrection('H');
errorCorrection
メソッドによってサポートされているオプション値は以下の通りです:
エラー訂正レベル | 補償できる誤りの割合 |
---|---|
L | 7% までの誤りが復元できます |
M | 15% までの誤りが復元できます |
Q | 25% までの誤りが復元できます |
H | 30% までの誤りが復元できます |
より高いエラー訂正レベルを使用すると、QRコードの大きさはより大きくなり、格納できるデータ量は少なくなります。詳しくは エラー訂正(リンク先は英語です) をご覧ください。
(string $encoding)
QRコードの生成に使われる文字コードを変更します。デフォルトではISO-8859-1
が指定されています。
詳細は 文字コード をお読みください。
以下のようにして文字コードを変更できます:
QrCode::encoding('UTF-8')->generate('日本語や特殊な文字を含むQRコードも作れます♠♥!!');
文字コード |
---|
ISO-8859-1 |
ISO-8859-2 |
ISO-8859-3 |
ISO-8859-4 |
ISO-8859-5 |
ISO-8859-6 |
ISO-8859-7 |
ISO-8859-8 |
ISO-8859-9 |
ISO-8859-10 |
ISO-8859-11 |
ISO-8859-12 |
ISO-8859-13 |
ISO-8859-14 |
ISO-8859-15 |
ISO-8859-16 |
SHIFT-JIS |
WINDOWS-1250 |
WINDOWS-1251 |
WINDOWS-1252 |
WINDOWS-1256 |
UTF-16BE |
UTF-8 |
ASCII |
GBK |
EUC-KR |
(string $filepath, float $percentage = .2, bool $absolute = false)
merge
メソッドはQRコードの上に画像を重ね合わせます。この機能は主にQRコードの中にロゴなどを配置する目的で使われます。
//中央に画像を配置したQRコードを生成します
QrCode::format('png')->merge('path-to-image.png')->generate();
//中央に画像を配置したQRコードを生成します。配置された画像は最大でQRコードの大きさの30%になります。
QrCode::format('png')->merge('path-to-image.png', .3)->generate();
//中央に画像を配置したQRコードを生成します。配置された画像は最大でQRコードの大きさの30%になります。
QrCode::format('png')->merge('http://www.google.com/someimage.png', .3, true)->generate();
merge
メソッドは現在のところPNGファイルのみをサポートしています。 引数$absolute
がfalse
の場合はファイルパスはプロジェクトルートからの相対パスとして認識されます。絶対パスで指定する場合はtrue
を指定してください。
merge
メソッドを使用して画像を重ねているときでもQRコードを読み取れるようにするために、エラー訂正レベルも高くするべきです。errorCorrection('H')
の使用を推奨します。
(string $content, float $percentage = .2)
mergeString
メソッドは、ファイルを指定する代わりにバイナリ文字列を受け取る点を除いてはmerge
メソッドと同様の挙動になります。
// 中央に画像を配置したQRコードを生成します
QrCode::format('png')->mergeString(Storage::get('path/to/image.png'))->generate();
// 中央に画像を配置したQRコードを生成します。配置された画像は最大でQRコードの大きさの30%になります。
QrCode::format('png')->mergeString(Storage::get('path/to/image.png'), .3)->generate();
merge
メソッドと同様に、現時点ではPNG形式のみサポートしています。エラー訂正についても同様にHレベルを推奨します。
全てのメソッドはチェーン呼び出しをサポートしています。generate
メソッドは必ず最後に呼び出されなければいけません。例えば以下のようになります:
QrCode::size(250)->color(150,90,10)->backgroundColor(10,14,244)->generate('Make me a QrCode!');
QrCode::format('png')->size(399)->color(40,40,40)->generate('Make me a QrCode!');
そのままのバイナリ文字列とbase64_encode
によるエンコーディングを組み合わせて、PNG画像をファイルとして保存することなく直接表示することもできます。
<img src="data:image/png;base64, {!! base64_encode(QrCode::format('png')->size(100)->generate('Make me into an QrCode!')) !!} ">
ヘルパーは読み込み時に特定のアクションを実行するQRコードを簡単に生成するための機能です。
このヘルパーはビットコインの支払用QRコードを生成します。詳細情報(リンク先は英語です)
QrCode::BTC($address, $amount);
// 0.334BTCを指定したアドレスに送金
QrCode::BTC('bitcoin address', 0.334);
// いくつかのオプションを付けて0.334BTCを指定したアドレスに送金
QrCode::size(500)->BTC('address', 0.0034, [
'label' => 'my label',
'message' => 'my message',
'returnAddress' => 'https://www.returnaddress.com'
]);
このヘルパーはEメールアドレス、件名、本文を指定してメールを送信するQRコードを生成します。
QrCode::email($to, $subject, $body);
// アドレスを指定します
QrCode::email('foo@bar.com');
// アドレス、件名、本文を指定します
QrCode::email('foo@bar.com', 'This is the subject.', 'This is the message body.');
// メールの件名と本文のみを指定します
QrCode::email(null, 'This is the subject.', 'This is the message body.');
このヘルパーは緯度と経度を指定してGoogleマップなどの地図アプリを開くQRコードを生成します。
QrCode::geo($latitude, $longitude);
QrCode::geo(37.822214, -122.481769);
このヘルパーは読み取ったときに電話をかけるQRコードを生成します。
QrCode::phoneNumber($phoneNumber);
QrCode::phoneNumber('555-555-5555');
QrCode::phoneNumber('1-800-Laravel');
このヘルパーは送信先と本文を指定してSMSメッセージを作成するQRコードを生成します。
QrCode::SMS($phoneNumber, $message);
// 電話番号が入力済みの状態でSMSメッセージを作成します
QrCode::SMS('555-555-5555');
// 電話番号と本文が入力済みの状態でSMSメッセージを作成します
QrCode::SMS('555-555-5555', 'Body of the message');
このヘルパーはWi-Fiの接続情報を自動入力するQRコードを生成します。
QrCode::wiFi([
'encryption' => 'WPA/WEP',
'ssid' => 'SSID of the network',
'password' => 'Password of the network',
'hidden' => 'Whether the network is a hidden SSID or not.'
]);
// Wi-Fiのオープンネットワークに接続します
QrCode::wiFi([
'ssid' => 'Network Name',
]);
// SSIDの公開されていないオープンネットワークに接続します
QrCode::wiFi([
'ssid' => 'Network Name',
'hidden' => 'true'
]);
// 暗号化されたWi-Fiネットワーク接続します
QrCode::wiFi([
'ssid' => 'Network Name',
'encryption' => 'WPA',
'password' => 'myPassword'
]);
Wi-Fi接続情報のQRコードは現在のところApple社の製品ではサポートされていません。
generate
メソッドに渡す文字列にプレフィックスを付けることで、様々なQRコードを生成できます。
QrCode::generate('http://www.tarikmanoar.com');
利用方法 | プレフィックス | 例 |
---|---|---|
ウェブサイトURL | http:// | http://www.tarikmanoar.com |
暗号化されたウェブサイトURL | https:// | https://www.tarikmanoar.com |
Eメールアドレス | mailto: | mailto:support@tarikmanoar.com |
電話番号 | tel: | tel:555-555-5555 |
SMS | sms: | sms:555-555-5555 |
本文入力済みSMS | sms: | sms::入力済みメッセージ |
本文・宛先入力済みSMS | sms: | sms:555-555-5555:入力済みメッセージ |
位置情報 | geo: | geo:-78.400364,-85.916993 |
MeCard | mecard: | MECARD:Simple, Software;Some Address, Somewhere, 20430;TEL:555-555-5555;EMAIL:support@tarikmanoar.com; |
VCard | BEGIN:VCARD | 例(リンク先は英語です) |
Wi-Fi | wifi: | wifi:WEP/WPA;SSID;PSK;Hidden(True/False) |
このパッケージはGenerater
クラスをインスタンス化することで、Laravelの外でも使えます。
use Manoar\QrCode\Generator;
$qrcode = new Generator;
$qrcode->size(500)->generate('Make a qrcode without Laravel!');