最近在 Thinkphp5.x 項目中遇到需要生成 條形碼 / 二維碼,網上找了些資料和方法,在此做一下匯總
一、生成 二維碼
1、下載并整合QrCode工具包
composer require endroid/qrcode
2、 在控制器中引入QrCode類
<?php
/**
* 我的控制器
*/
namespace app\miniapps\controller;
use think\Controller;
use Endroid\QrCode\QrCode;//引入類
3、然后 這個類庫要改一下 在路徑:項目路徑/vendor/endroid/qrcode/src/QrCode.php 改成
const LABEL_FONT_PATH_DEFAULT = '';
4、在控制器中調用
//調用顯示用戶禮物二維碼
public function qrcode()
{
$name = ‘二維碼’;//二維碼下方顯示文字
$tel = '15123456789';//二維碼附帶信息
$qrCode=new QrCode();
$url = 'https://fai.com/details?tel='.$tel;//加http://這樣掃碼可以直接跳轉url
$qrCode->setText($url)
->setSize(100)//大小
->setLabelFontPath(VENDOR_PATH.'endroid\qrcode\assets\noto_sans.otf')
->setErrorCorrectionLevel('high')
->setForegroundColor(array('r' => 0, 'g' => 0, 'b' => 0, 'a' => 0))
->setBackgroundColor(array('r' => 255, 'g' => 255, 'b' => 255, 'a' => 0))
->setLabel("$name")
->setLabelFontSize(10);
header('Content-Type: '.$qrCode->getContentType());
echo $qrCode->writeString();
exit;
}
5、在需要展示的地方直接訪問該方法,就可以顯示二維碼了
二、生成條形碼
類文件是放在 擴展目錄extend之下的(解壓后直接將整個文件夾放入extend擴展目錄)
1、 條形碼工具包下載 BCode.tar
<?php
namespace app\miniapps\controller;
use think\Controller;
use think\Db;
use Endroid\QrCode\QrCode;
use think\Loader;
class Myclass extends controller
{
public function barcode(){
$content='123456'; //為條形碼內容信息
// 引用barcode文件夾對應的類
Loader::import('BCode.BCGFontFile',EXTEND_PATH);
//Loader::import('BCode.BCGColor',EXTEND_PATH);
Loader::import('BCode.BCGDrawing',EXTEND_PATH);
// 條形碼的編碼格式
Loader::import('BCode.BCGcode39',EXTEND_PATH,'.barcode.php');
// $code = '';
// 加載字體大小
//$font = new BCGFontFile('./class/font/Arial.ttf', 18);
//顏色條形碼
$color_black = new \BCGColor(0, 0, 0);
$color_white = new \BCGColor(255, 255, 255);
$drawException = null;
try
{
$code = new \BCGcode39();
$code->setScale(2);
$code->setThickness(30); // 條形碼的厚度
$code->setForegroundColor($color_black); // 條形碼顏色
$code->setBackgroundColor($color_white); // 空白間隙顏色
// $code->setFont($font); //
$code->parse($content); // 條形碼需要的數據內容
}
catch(\Exception $exception)
{
$drawException = $exception;
}
//根據以上條件繪制條形碼
$drawing = new \BCGDrawing('', $color_white);
if($drawException) {
$drawing->drawException($drawException);
}else{
$drawing->setBarcode($code);
$drawing->draw();
}
// 生成PNG格式的圖片
header('Content-Type: image/png');
// header('Content-Disposition:attachment; filename="barcode.png"'); //自動下載
$drawing->finish(\BCGDrawing::IMG_FORMAT_PNG);//若直接輸出到瀏覽器,需要加 die;
}
}
2、頁面中的資源路徑直接問該方法即可
<img src='http://fangxinsai.com/index/myclass/barcode' />
3、完成以上就實現了條形碼生成
附文:掃碼槍掃條形碼,傳入WEB 表單頁面
覺得有用的可以點一下喜歡哦