在 Laravel 5 中通过 Simple QrCode 扩展包生成二维码详解

1、简介

Simple Qrcode 是 Bacon/BaconQrCode 针对 Laravel 框架的封装版本,用于在 Laravel 中为生成二维码提供接口。

2、安装&配置

在项目根目录下使用如下命令安装依赖包:

config/app.php
SimpleSoftwareIO\QrCode\QrCodeServiceProvider::class
config/app.phpQrCode
'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::encoding('UTF-8')->generate('你好,Laravel学院!');
generate()
{!! QrCode::generate('Hello,LaravelAcademy!'); !!}
generate()

修改保存格式

format()
format()sizecolorbackgroundColormargin

修改二维码图片尺寸

size()

这样会生成一个宽高均为100像素的二维码图片:

修改颜色(前景色/背景色)

color()

生成的二维码图片如下:

backgroundColor()

生成的二维码图片如下:

修改边距

margin()

生成的二维码图片如下:

支持编码

encoding()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

如果在生成二维码过程中报错:

Could not encode content to ISO-8859-1

这就意味着你需要修改编码了。

合并水印图片到二维码

merge()
merge()
merge()

5、辅助函数

我们平时用到的二维码不仅仅是显示文字,而是拥有很多额外功能,比如跳转链接、支付、下载、关注等等,这些功能可以通过 QrCode 提供的辅助函数来实现。

邮件

email()
QrCode::email('yaojinbu@163.com','测试邮件','通过二维码发送图片');

生成的二维码包含 mailto 信息。

Geo

geo()
QrCode::geo(37.822214, -122.481769);

电话/手机号码

phoneNumber()
QrCode::phoneNumber('18888888888');

短信(SMS)

SMS()
QrCode::encoding('UTF-8')->SMS('18888888888','Laravel学院致力于提供优质Laravel中文学习资源');

更多用法

generate()
使用 前缀 示例
Website URL http:// http://www.simplesoftware.io
Secured URL https:// https://www.simplesoftware.io
E-mail Address mailto: mailto:support@simplesoftware.io
Phone Number tel: tel:555-555-5555
Text (SMS) sms: sms:555-555-5555
Text (SMS) With Pretyped Message sms: sms::I am a pretyped message
Text (SMS) With Pretyped Message and Number sms: sms:555-555-5555:I am a pretyped message
Geo Address geo: geo:-78.400364,-85.916993
MeCard mecard: MECARD:Simple, Software;Some Address, Somewhere, 20430;TEL:555-555-5555;EMAIL:support@simplesoftware.io;
VCard BEGIN:VCARD
Wifi wifi: wifi:WEP/WPA;SSID;PSK;Hidden(True/False)

比如,要生成链接二维码,可以通过如下方式(我们还修改尺寸以方便扫描):

QrCode::size(200)->generate('https://xueyuanjun.com');

扫描生成的二维码图片,页面会跳转到 https://xueyuanjun.com。

6、在 Laravel 之外使用

你还可以在 Laravel 之外使用 Simple QrCode: