在 Laravel 5 中通過 Simple QrCode 擴充套件包生成二維碼詳解
1、簡介
Simple Qrcode 是 Bacon/BaconQrCode 針對 Laravel 框架的封裝版本,用於在 Laravel 中為生成二維碼提供介面。
2、安裝&配置
在專案根目錄下使用如下命令安裝依賴包:
composer require simplesoftwareio/simple-qrcode 1.3.*
在 config/app.php 註冊服務提供者:
SimpleSoftwareIO\QrCode\QrCodeServiceProvider::class
同樣在 config/app.php 新增 QrCode 門面:
'QrCode' => SimpleSoftwareIO\QrCode\Facades\QrCode::class
3、快速上手
在檢視中列印
<div class="visible-print text-center">
{!! QrCode::size(100)->generate(Request::url()); !!}
<p>Scan me to return to the original page.</p>
</div>
嵌入到郵件內容
<img src="{!!$message->embedData(QrCode::format('png')->generate('Embed me into an e-mail!'), 'QrCode.png', 'image/png')!!}">
4、基本用法
基本使用
Qrcode 生成器用法很簡單,最基本的語法如下:
QrCode::generate('Hello,LaravelAcademy!');
這將會生成一個二維碼,用手機掃描該二維碼將會跳轉到一個顯示“Hello,LaravelAcademy!”的頁面。
如果想要顯示中文,需要使用如下方式指定編碼:
{!! QrCode::generate('Hello,LaravelAcademy!'); !!}
此外,generate() 方法還可以接受第二個引數用於指定檔名以及儲存路徑:
if(!file_exists(public_path('qrcodes'))) mkdir(public_path('qrcodes')); QrCode::generate('Hello,LaravelAcademy!', public_path('qrcodes/qrcode.svg'));
這樣生成的 SVG 檔案會儲存到 /public/qrcodes/qrcode.svg。
修改儲存格式
前面我們說了,QrCode 預設生成 SVG 格式檔案,當然,我們可以修改儲存格式,目前 Simple QrCode 支援三種格式:PNG、SVG 和 RPS。要修改生成二維碼圖片格式,可以使用 format() 方法:
QrCode::format('png')->generate('Hello,LaravelAcademy!',public_path('qrcodes/qrcode.png'));
這樣會在 /public/qrcodes 目錄下生成 qrcode.png 圖片。要生成其它格式,將對應格式傳入 format() 方法即可。
注:format() 方法必須在所有其它格式化方法之前呼叫,這些格式化方法包括 size、color、backgroundColor 和 margin。
修改二維碼圖片尺寸
QrCode 生成器預設返回最小尺寸二維碼圖片。如果要修改生成二維碼圖片尺寸,可以使用 size() 方法:
QrCode::format('png')->size(100)->generate('Hello,LaravelAcademy!',public_path('qrcodes/qrcode.png'));
這樣會生成一個寬高均為100畫素的二維碼圖片。
修改顏色(前景色/背景色)
我們還可以通過 color() 方法來修改生成二維碼圖片的顏色,顏色引數以 RGB 格式表示:
QrCode::format('png')->size(100)->color(255,0,255)->generate('Hello,LaravelAcademy!',public_path('qrcodes/qrcode.png'));
生成的二維碼圖片如下:
此外,還可以使用 backgroundColor() 方法修改背景色:
QrCode::format('png')->size(100)->color(255,0,255)->backgroundColor(255,255,0)->generate('Hello,LaravelAcademy!',public_path('qrcodes/qrcode.png'));
生成的二維碼圖片如下:
修改邊距
如果你想要修改二維碼圖片與最外層容器邊框的距離,可以使用 margin() 方法:
QrCode::format('png')->size(100)->color(255,0,255)->backgroundColor(255,255,0)->margin(100)->generate('Hello,LaravelAcademy!',public_path('qrcodes/qrcode.png'));
生成的二維碼圖片如下:
支援編碼
關於編碼問題我們前面已經提到過,即使用 encoding() 方法設定當前編碼,QrCode 預設編碼為 ISO-8859-1,目前支援如下編碼:
字元編碼 |
---|
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 |