[TOC] #### 1. 安裝擴(kuò)展 --- Packagist : [https://packagist.org/packages/endroid/qr-code](https://packagist.org/packages/endroid/qr-code) 注意使用的版本,寫本文章時(shí) 3.x 是最新版,現(xiàn)在已經(jīng)有更新的版本了,在新版本中,本文有些方法不能使用了 ``` composer require endroid/qr-code:"3.*" ``` #### 2. 使用示例 --- ```php <?php // composer require endroid/qr-code require 'vendor/autoload.php'; use Endroid\QrCode\QrCode; use Endroid\QrCode\ErrorCorrectionLevel; use Endroid\QrCode\LabelAlignment; use Endroid\QrCode\Response\QrCodeResponse; // 掃描二維碼后跳轉(zhuǎn)的地址 $qrCode = new QrCode('http://m.waterflosserreview.com'); // 內(nèi)容區(qū)域?qū)捀?默認(rèn)為300 $qrCode->setSize(300); // 外邊距大小,默認(rèn)為10 $qrCode->setMargin(10); // 設(shè)置編碼 $qrCode->setEncoding('UTF-8'); // 設(shè)置容錯(cuò)等級(jí) $qrCode->setErrorCorrectionLevel(ErrorCorrectionLevel::HIGH()); // 設(shè)置二維碼顏色,默認(rèn)為黑色 $qrCode->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0]); // 設(shè)置二維碼背景色,默認(rèn)為白色 $qrCode->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0]); ##### 設(shè)置二維碼下方的文字 ##### $qrCode->setLabel('個(gè)人技術(shù)博客網(wǎng)站', 11, null, LabelAlignment::CENTER()); ##### 二維碼中的logo ##### $qrCode->setLogoPath('logo.jpg'); $qrCode->setLogoSize(100, 90); // $qrCode->setLogoWidth(100); // $qrCode->setLogoHeight(90); ##### 二維碼中的logo / ##### // 啟用內(nèi)置的驗(yàn)證讀取器(默認(rèn)情況下禁用) $qrCode->setValidateResult(false); ########## 二維碼三種顯示方式 ########## // 二維碼輸出在瀏覽器上 // header('Content-Type: ' . $qrCode->getContentType()); // echo $qrCode->writeString(); // 二維碼存在本地 // $qrCode->writeFile('3.png'); // 返回?cái)?shù)據(jù)URI // data:image/png;base64,iVBORwxxx $dataUri = $qrCode->writeDataUri(); echo '<img src="' . $dataUri . '">'; ``` #### 3. 快速使用 --- 實(shí)際開發(fā)中,使用最多的是根據(jù)一串普通文本生成字符串,所以我將代碼做了簡(jiǎn)化,方便以后快速使用 ```php <?php // composer require endroid/qr-code require 'vendor/autoload.php'; use Endroid\QrCode\QrCode; $qrCode = new QrCode("http://m.waterflosserreview.com"); // 內(nèi)容區(qū)域?qū)捀?默認(rèn)為300 $qrCode->setSize(300); // 外邊距大小,默認(rèn)為10 $qrCode->setMargin(10); // 設(shè)置編碼 $qrCode->setEncoding('UTF-8'); // 返回?cái)?shù)據(jù)URI // data:image/png;base64,iVBORwxxx $dataUri = $qrCode->writeDataUri(); echo '<img src="' . $dataUri . '">'; ``` #### 4. 無(wú)法識(shí)別二維碼問題 --- **閑著沒事,測(cè)試二維碼中放入logo時(shí)發(fā)現(xiàn)掃描二維碼無(wú)法識(shí)別,經(jīng)過反復(fù)調(diào)試得出結(jié)論:logo圖片太大導(dǎo)出無(wú)法識(shí)別二維碼** ![](https://img.itqaq.com/art/content/07028a61293dc3eed9e3694e263085cb.png) **適當(dāng)縮小logo大小后就可以正常識(shí)別二維碼了** ![](https://img.itqaq.com/art/content/13f78201d672d4f5209ac26f0fcb78a4.png)