Laravel 生成QRCODE,网上比较多人用 的是 simplesoftwareio/simple-qrcode,先说这个,简单说一下安装:
composer require simplesoftwareio/simple-qrcode
SimpleSoftwareIO\QrCode\QrCodeServiceProvider::class
'QrCode' => SimpleSoftwareIO\QrCode\Facades\QrCode::class
然后使用:
$qrcode = QrCode::size(300)->generate('大头竹笋ken!');
正常使用是这样的,将$qrcode的值写到<img> 中,就会显示QRCODE,但是如果我要将模板生成PDF ,图片就会不显示,输出html显示如果:
查看元素,$qrcode 其实是个SVG,需要转成PNG,于是使用以下代码:
$qrcode = QrCode::format('png')->size(300)->generate('大头竹笋ken!','abc.png');
报错了:
本机没有安装 imagick,也懒得安装,最后在网上找到这种方法:
<img src="data:image/svg+xml;base64,{!! base64_encode($qrcode) !!}" style="width: 160px" />
先转base64编码再输出,完美解决!
另一种方法: phpqrcode
下载地址:http://sourceforge.net/projects/phpqrcode/files/latest/download 案例演示:http://phpqrcode.sourceforge.net/examples/
下载后的版本2010的,凡是下载了一下旧版本的插件,最后在本机的环境运行一下,检查有无语法不兼容的问题,因为我现在的PHP 版本已经在用7.4 了!
测试后无问题,接着部署到laravel 里面,phpqrcode 解压后我放的位置:app/Lib/phpqrcode/
composer.json 新增内容:
运行命令:
composer dumpautoload
在Controller 中使用:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use phpqrcode;
class QrcodeController extends Controller
{
public function index(){
$img = new \QRcode();
$value = 'https://www.baidu.com'; //二维码内容
$img->png($value,false,'H',5,1);
die();
}
}
png() 的参数说明:
第一个参数$text,就是上面代码里的URL网址参数,
第二个参数$outfile默认为否,不生成文件,只将二维码图片返回,否则需要给出存放生成二维码图片的路径
第三个参数$level默认为L,这个参数可传递的值分别是L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%)。这个参数控制二维码容错率,不同的参数表示二维码可被覆盖的区域百分比。利用二维维码的容错率,我们可以将头像放置在生成的二维码图片任何区域。
第四个参数$size,控制生成图片的大小,默认为4
第五个参数$margin,控制生成二维码的空白区域大小
第六个参数$saveandprint,保存二维码图片并显示出来,$outfile必须传递图片路径。
die()是一定要填的,如果不填就会有一堆乱码,像这样:
在laravel 中这样就很麻烦了,所以最后我将它做成接口了!
路由
Route::get('/qrcode/index', 'QrcodeController@index');
模板
<img src="{{ url('/qrcode/index') }}" style="width: 100px;"/>
两种方法都可以,常用的是第一种simplesoftwareio/simple-qrcode,第二种太旧了!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/97975.html