最近做项目要生成二维码让用户做跳转,搜索了一下发现网上都是用一个叫做 phpqrcode 的扩展,在 github 上搜索了一下发现这个项目作者在6年前就已经没有维护了,百度的文章也是千篇一律的你复制我的我复制你的,所以只好在 github 上看看有没有更好的关于 PHP 生成二维码的扩展,之后找到了一个项目名称为 qr-code 的扩展,感觉不错,作者也一直在做维护,使用也是简单方便。所以在这里把这个扩展的安装使用说明一下,方便各位的开发。
qr-code 项目的github 地址为:qr-code
安装 qr-code
$ composer require endroid/qr-code

当扩展安装完毕后,我们就可以开始下面的操作了。
生成二维码
using the builder--使用builder生成器
<?php
require 'vendor/autoload.php';
use Endroid\QrCode\Builder\Builder;
use Endroid\QrCode\Encoding\Encoding;
use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelHigh;
use Endroid\QrCode\Label\Alignment\LabelAlignmentCenter;
use Endroid\QrCode\Label\Font\NotoSans;
use Endroid\QrCode\RoundBlockSizeMode\RoundBlockSizeModeMargin;
use Endroid\QrCode\Writer\PngWriter;
$result = Builder::create()
->writer(new PngWriter())
->writerOptions([])
->data('Custom QR code contents')
->encoding(new Encoding('UTF-8'))
->errorCorrectionLevel(new ErrorCorrectionLevelHigh())
->size(300)
->margin(10)
->roundBlockSizeMode(new RoundBlockSizeModeMargin())
// ->logoPath(__DIR__.'/assets/symfony.jpg')
->labelText('This is the label')
->labelFont(new NotoSans(20))
->labelAlignment(new LabelAlignmentCenter())
->build();
// 直接输出二维码
//header('Content-Type: '.$result->getMimeType());
//echo $result->getString();
//保存到一个文件
$result->saveToFile(__DIR__.'/qrcode.png');
//生成一个数据URI包含内联图像数据(即在一个< img >标记)
//$dataUri = $result->getDataUri();without using the builder--不适用builder生成器
<?php
require 'vendor/autoload.php';
use Endroid\QrCode\Color\Color;
use Endroid\QrCode\Encoding\Encoding;
use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelLow;
use Endroid\QrCode\QrCode;
use Endroid\QrCode\Label\Label;
use Endroid\QrCode\Logo\Logo;
use Endroid\QrCode\RoundBlockSizeMode\RoundBlockSizeModeMargin;
use Endroid\QrCode\Writer\PngWriter;
$writer = new PngWriter();
// Create QR code
$qrCode = QrCode::create('Data')
->setEncoding(new Encoding('UTF-8'))
->setErrorCorrectionLevel(new ErrorCorrectionLevelLow())
->setSize(300)
->setMargin(10)
->setRoundBlockSizeMode(new RoundBlockSizeModeMargin())
->setForegroundColor(new Color(0, 0, 0))
->setBackgroundColor(new Color(255, 255, 255));
// Create generic logo
$logo = Logo::create(__DIR__.'/assets/symfony.jpg')
->setResizeToWidth(50);
// Create generic label
$label = Label::create('Label')
->setTextColor(new Color(255, 0, 0));
$result = $writer->write($qrCode, $logo, $label);
// Save it to a file
$result->saveToFile(__DIR__.'/qrcode.png'); 
附:
使用jquery.qrcode.js插件生成二维码QRCode
本文为崔凯原创文章,转载无需和我联系,但请注明来自冷暖自知一抹茶ckhttp://www.cksite.cn