美文网首页我爱编程
二维码 / 条形码 生成 (ThinkPHP5.X )

二维码 / 条形码 生成 (ThinkPHP5.X )

作者: 丢了发型的男人 | 来源:发表于2018-04-13 15:43 被阅读0次

    最近在 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 表单页面

    觉得有用的可以点一下喜欢哦

    相关文章

      网友评论

        本文标题:二维码 / 条形码 生成 (ThinkPHP5.X )

        本文链接:https://www.haomeiwen.com/subject/jouckftx.html