使用composer安装和使用endroid/QrCode来生成二维码

现在很多框架都支持且仅支持使用composer来安装和管理,比如最新的thinkphp6,对于很多没接触过composer的人很迷茫,但在百度搜thinkphp6怎么生成二维码,大多没结果。
刚好最近在用thinkphp6重写一个项目,遇到生成二维码这块,显然之前的phpqrcode是不能再用了,而且composer上面也没有phpqrcode的版本,所以呢,用endroid/QrCode替代,写好来分享给大家。
composer的介绍和安装今天先不说,直接进入“使用composer安装和使用endroid/QrCode来生成二维码”。

1、安装composer

2、使用composer命令安装endroid/QrCode
$ composer require endroid/qr-code

3、实现代码
//生成二维码的功能无非就是:/二维码上的内容、二维码的尺寸大小、二维码上的LOGO、二维码上的文字….
//在GitHub上项目仓库里也有给出例子(https://github.com/endroid/qr...

<?php
//引入composer自动生成的类加载器
require_once 'vendor/autoload.php';
//命名空间方式调用QrCode类
use Endroid\QrCode\ErrorCorrectionLevel;
use Endroid\QrCode\LabelAlignment;
use Endroid\QrCode\QrCode;
use Endroid\QrCode\Response\QrCodeResponse;

$qrCode = new QrCode();
$qrCode->setText('设置二维码上的内容'); //设置二维码上的内容

$qrCode->setSize(300); //二维码尺寸

$qrCode->setWriterByName('png'); //设置输出的二维码图片格式

$qrCode->setMargin(10);

$qrCode->setEncoding('UTF-8');

$qrCode->setErrorCorrectionLevel(ErrorCorrectionLevel::HIGH()); //设置二维码的纠错率,可以有low、medium、quartile、hign多个纠错率

$qrCode->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0]); //设置二维码的rgb颜色和透明度a,这里是黑色

$qrCode->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0]); //设置二维码图片的背景底色,这里是白色

//可能的指定二维码下方的文字,写死15px的字体大小,字体

$qrCode->setLabelFontPath(__DIR__.'/vendor/endroid/qr-code/assets/fonts/noto_sans.otf'); //字体路径

$qrCode->setLabel('二维码下方的文字1'); //文字

$qrCode->setLabelFontSize(16); //字体大小

//或统一用setLabel('二维码下方的文字','字体大小','字体路径','对齐方式')来设置

$qrCode->setLabel('二维码下方的文字2', 16, __DIR__.'/vendor/endroid/qr-code/assets/fonts/noto_sans.otf', LabelAlignment::CENTER());

$qrCode->setLabelMargin(['t'=>50]); //设置标签边距 array('t' => 10,'r' => 20,'b' => 10,'l' => 30)

//如果要加上logo水印,则在调用setLogoPath和setLogoSize方法

$qrCode->setLogoPath(__DIR__.'/logo.png'); //logo水印图片的所在的路径

$qrCode->setLogoSize(150, 200); //设置logo水印的大小,单位px ,参数如果是一个int数字等比例缩放

//保存二维码

$qrCode->writeFile(__DIR__.'/qrcode.png');

//输出二维码

header('Content-Type: '.$qrCode->getContentType());

exit($qrCode->writeString());

?>

4、注意
QrCode生成中文汉字的label的时需要引入中文字体,所以需要调用setLabelFontPath方法传入一个中文字体的路径,QrCode默认提供的字体在\vendor\endroid\qrcode\assets\font路径下,但QrCode类并未默认调用,另外需要使用UTF8编码的中文设置label。

5、各参数详解
参数名 描述 示例
setText 设置文本 https://www.caizhichao.com
setSize 设置二维码的大小,这里二维码应该是正方形的,所以相当于长宽 400
setMargin 设置二维码边距 10
setForegroundColor 设置前景色,RGB颜色 array(‘r’ => 0, ‘g’ => 0, ‘b’ => 0, ‘a’ => 0)
setBackgroundColor 设置背景色,RGB颜色 array(‘r’ => 0, ‘g’ => 0, ‘b’ => 0, ‘a’ => 0)
setEncoding 设置编码 utf8
setErrorCorrectionLevel 设置错误级别(low / medium / quartile / high) high
setLogoPath 设置logo路径 logo.png
setLogoWidth 设置logo大小 50
setLabel 设置标签 test
setLabelFontSize 设置标签字体大小 16
setLabelFontPath 设置标签字体路径 null
setLabelAlignment 设置标签对齐方式(left / center / right) center
setLabelMargin 设置标签边距 array(‘t’ => 10,’r’ => 20,’b’ => 10,’l’ => 30)
setWriterRegistry
setWriter
setWriterByName 写入文件的后缀名 png
setWriterByPath
setWriterByExtension
setValidateResult
writeString
writeDataUri
writeFile 写入文件 test.png

你可能感兴趣的:(php)