导语:
喜欢laravel的开发者都知道,laravel的特点就是可使用的三方扩展众多,参与开发的不仅仅是官方开发团队,更多的是它的爱好者们。这里记录一下他的二维码生成的三方扩展包的使用。
一、扩展包的安装引入:
使用 composer require simplesoftwareio/simple-qrcode 1.3.* 安装
二、注册服务提供者和添加门面别名:
在 config/app.php 中注册服务提供者 (放到provider中)
SimpleSoftwareIO\QrCode\QrCodeServiceProvider::class,
继续在 config/app.php 中添加门面(放入aliases中)
'QrCode' => SimpleSoftwareIO\QrCode\Facades\QrCode::class
经过以上两个步骤,在 laravel 中就可以使用 QrCode 来生成二维码了。实际中通过 composer 加载的包都是以上步骤,门面可以选择不添加。
三、使用QrCode输出二维码:
定义好路由之后,测试下。可以使用门面,也可以实例化,都是一样的。完整代码查看GitHub
直接生成二维码
QrCode::generate(date('Y-m-d H:i:s'));
这里生成的是svg格式的二维码,可以直接PHP 用echo输出 也可以赋值给前端的参数输出到页面中,此时输出后你会发现尺寸太小了,那么可以用内置的方法size设置尺寸,例如:
QrCode::size(200)->generate(date('Y-m-d H:i:s'));
同样也可以在视图中直接显示二维码:
<div class="visible-print text-center">
{!! QrCode::size(100)->generate(Request::url()); !!}
<p>Scan me to return to the original page.</p>
</div>
以上使用的方式均为动态生成二维码的方式,下面说一下生成静态码(图片文件)的方式
$qr->generate('hello world', $path.'qr1.svg');
第二个参数就是图片保存的路径,默认格式为svg,如需其他格式可以使用下边所用的format方法修改:
$qr->format('png')->generate('hello world', $path.'qr2.png');
同时还有一些其他方法,例如修改颜色(color)、边距(margin)、背景色(backgroundColor)、编码方式(encoding)等:
QrCode::format('png')->size(100)->color(255,0,255)->backgroundColor(255,255,0)->margin(100)->generate('Hello,LaravelAcademy!',public_path('qrcodes/qrcode.png'));
如果需要在二维码中心位置设置一个头像图片,可以试用merge方法进行图片的合成,第一个参数为头像图片,第二个为百分比
QrCode::format('png')->size(200)->merge('/public/qrcodes/laravel.png',.15)->generate('LaravelAcademy',public_path('qrcodes/qrcode.png'));
二维码+背景图生成海报图
$bg = imagecreatefrompng(public_path('qrcodes/bg.png')); //这里是背景图的相对路径
$qrcode = imagecreatefrompng(public_path('qrcodes/abc.png')); //这里是上边产生的二维码
imagecopyresampled($bg, $qrcode, 283, 1061, 0, 0, 185, 185, imagesx($qrcode), imagesy($qrcode)); //两个图片合成
参数解析:$bg:背景图; $qrcode:二维码;
283:二维码的横坐标 1061:二维码的纵坐标
(185,185):二维码在背景图上所占用的宽度和高度
imagesx($qrcode) 二维码显示的宽度 imagesy($qrcode)二维码显示的高度
imagepng($bg, public_path('haibao/' . strtoupper($data['openid']) . '.png')); //保存海报文件
网友评论