在Laravel5中通过SimpleQrCode扩展包⽣成⼆维码详解
1、简介
Simple Qrcode 是 针对 框架的封装版本,⽤于在 Laravel 中为⽣成提供接⼝。
2、安装&配置
svg文件怎么生成在项⽬根⽬录下使⽤如下命令安装依赖包:
composer require simplesoftwareio/simple-qrcode 1.3.*
在 config/app.php 注册服务提供者:
SimpleSoftwareIO\\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::encoding('UTF-8')->generate('你好,Laravel学院!');
generate() ⽅法⽤于⽣产⼆维码图⽚,默认情况下,返回⼀个 格式的图⽚字符串,在视图中我们可以可以通过如下⽅式将其打印出来:{!! 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 ⽀持三种格式:、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
如果在⽣成⼆维码过程中报错:
Could not encode content to ISO-8859-1
这就意味着你需要修改编码了。
合并图⽚到⼆维码
我们有时候需要将 Logo 或者头像放到⼆维码图⽚上,这可以通过 merge() ⽅法实现:
QrCode::format('png')->size(200)->merge('/public/qrcodes/laravel.png',.15)->generate('LaravelAcademy',public_path('qrcodes/qrcode.png'));
merge() 的第⼀个参数是⽔印图⽚(Logo或头像)的相对路径(相对于项⽬根⽬录),第⼆个参数表⽰所占百分⽐。上述⽣成的⼆维码图⽚如下:
注:⽬前 merge() ⽅法只⽀持 PNG 格式⼆维码图⽚。
5、辅助函数
我们平时⽤到的⼆维码不仅仅是显⽰⽂字,⽽是拥有很多额外功能,⽐如跳转链接、⽀付、下载、关注等等,这些功能可以通过 QrCode 提供的辅助函数来实现。
邮件
email() 函数可以⽤于⽣产邮件⼆维码, 我们可以传递邮箱地址、主题和内容到该函数:
QrCode::email('yaojinbu@163','测试邮件','通过⼆维码发送图⽚');
⽣成的⼆维码包含 mailto 信息。
Geo
geo() 函数可以⽣成⼿机可以读取并在 Google 地图或类似应⽤中定位的经度和纬度信息:
QrCode::geo(37.822214, -122.481769);
电话/⼿机号码
phoneNumber() 函数可以⽣成⼀个包含⼿机/⼿机号码信息的⼆维码图⽚:
QrCode::phoneNumber('188********');
短信()
SMS() 辅助函数可⽣成包括收件⼈和信息的短信⼆维码:
QrCode::encoding('UTF-8')->SMS('188********','Laravel学院致⼒于提供优质Laravel中⽂学习资源');
更多⽤法
此外,你还可以通过在传⼊ generate() ⽅法的第⼀个字符串参数前添加如下前缀以⽣成对应⼆维码:使⽤前缀⽰例
Website www.simplesoftware.io
Secured URL 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
sms:sms::I am a pretyped message
Text (SMS) With
Pretyped Message
sms:sms:555-555-5555:I am a pretyped message
Text (SMS) With
Pretyped Message and
Number
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('');
6、在 Laravel 之外使⽤
你还可以在 Laravel 之外使⽤ Simple QrCode:
use SimpleSoftwareIO\QrCode\BaconQrCodeGenerator;
$qrcode = new BaconQrCodeGenerator;
$qrcode->size(500)->generate('Welcome to LaravelAcademy!');
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论