二維碼 / 條形碼 生成 (ThinkPHP5.X )

最近在 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 表單頁面

覺得有用的可以點一下喜歡哦

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容