正文 3619字数 25,838阅读


Laravel5中通过SimpleQrCode扩展包生成二维码

基本使用

如果想要显示中文,需要使用如下方式指定编码
QrCode::encoding('UTF-8')->generate('SimpleQrCode扩展包生成二维码测试!'); // 这就能创建一个内容是:“SimpleQrCode扩展包生成二维码测试!” 的二维码了.
Run code
Cut to clipboard


    生成二维码

    Generate是用来创建二维码的方法

    QrCode::generate('Make me into a QrCode!'); // 注意:要创建二维码必须使用此方法
    Run code
    Cut to clipboard

      Generate 默认返回一个 SVG 格式的图片文本. 你可以在Laravel 的 Blade 系统中把它显示到浏览器中,使用方式如下:

      {!! QrCode::generate('Make me into a QrCode!'); !!}
      Run code
      Cut to clipboard

        generate 方法的第二个参数是指定要存储图片数据的文件地址.

        QrCode::generate('Make me into a QrCode!', public_path('phpqrcodes/phpqrcode.svg'));
        Run code
        Cut to clipboard


          自定义图片格式

          自定义输出图片格式

          QrCode Generator 默认输出SVG格式的图片

          注意:format方法必须第一个被设置, 其它的设置如: size, color, backgroundColor, 和 margin 的设置必须在它的后边

          支持 PNG,EPS,SVG 三种格式,设置方式如下:

          QrCode::format('png'); // 返回一个PNG图像 QrCode::format('eps'); // 返回一个eps图像 QrCode::format('svg'); // 返回一个svg图像
          Run code
          Cut to clipboard


            尺寸设置

            QrCode 的 Generator 默认返回可能最小像素单位的二维码。可以使用 size 方法去设置它的尺寸,下方是设置像素尺寸的实例:

            return QrCode::size(200)->encoding('UTF-8')->generate('SimpleQrCode扩展包生成二维码测试!');
            Run code
            Cut to clipboard

              颜色设置(注意改变颜色后,可能会导致某些设备难以识别)

              颜色设置的格式必须是RBG格式. 设置方式如下:

              QrCode::color(255,0,255)->encoding('UTF-8')->generate('SimpleQrCode扩展包生成二维码测试!');
              Run code
              Cut to clipboard


                使用backgroundColor()设置背景色:

                return QrCode::size(200)->color(255,255,255)->backgroundColor(125,245,0)->encoding('UTF-8')->generate('SimpleQrCode扩展包生成二维码测试!');
                Run code
                Cut to clipboard


                  边距设置

                  QrCode::margin(100);
                  Run code
                  Cut to clipboard


                    容错级别设置

                    QrCode::errorCorrection("L");
                    Run code
                    Cut to clipboard


                      下方是errorCorrection方法支持的容错级别设置

                      容错级别 说明 L 7% 的字节码恢复率. M 15% 的字节码恢复率. Q 25% 的字节码恢复率. H 30% 的字节码恢复率. 容错级别越高,二维码里能存储的数据越少
                      Run code
                      Cut to clipboard


                        编码

                        SimpleQrCode扩展包支持编码

                        QrCode 创建二维码时可以使用不同的编码. 默认使用 ISO-8859-1. 详情见 character encoding 你可以使用以下的任一种编码:

                        return QrCode::errorCorrection('L')->size(200)->margin(2)->color(255,255,255)->backgroundColor(125,245,0)->encoding('UTF-8')->generate('SimpleQrCode扩展包生成二维码测试!');
                        Run code
                        Cut to clipboard


                          支持编码列表

                          ISO-8859-1 ISO-8859-2 ISO-8859-3 ISO-8859-4 ISO-8859-5 ISO-8859-6 ISO-8859-7 ISO-8859-8 ISO-8859-9 ISO-8859-10 ISO-8859-11 ISO-8859-12 ISO-8859-13 ISO-8859-14 ISO-8859-15 ISO-8859-16 SHIFT-JIS WINDOWS-1250 WINDOWS-1251 WINDOWS-1252 WINDOWS-1256 UTF-16BE UTF-8 ASCII GBK EUC-KR
                          Run code
                          Cut to clipboard


                            若抛出 Could not encode content to ISO-8859-1 意味着使用了错误的编码。建议你使用 UTF-8

                            Logo二维码

                            Logo或者头像放到二维码图片中

                            merge 方法可以让QrCode为生成结果加上LOGO图片. 下方是常见的为二维码加LOGO图片的使用方式。

                            // QrCode::merge($filename, $percentage, $absolute); //使用绝对路径的LOGO图片地址创建二维码,LOGO图片占整个二维码图片的30%. return QrCode::format('png')->size(200)->merge(public_path().'/ceshi.png',.3,true)->encoding('UTF-8')->generate('LaravelAcademy',public_path('phpqrcodes/phpqrcode.png'));
                            Run code
                            Cut to clipboard


                              merge 方法当前只支持PNG格式的图片 默认使用相对于应用程序的根路径,把第三个参数设置为 true 就能切换到使用绝对路径

                              WIFI扫描

                              WIFI(WIFI扫描目前不支持在苹果产品。)

                              这个辅助方法能创建扫一下能连接WIFI的二维码

                              QrCode::wiFi([ 'encryption' => 'WPA/WEP', 'ssid' => '网络的SSID', 'password' => '网络的密码', 'hidden' => '是否是一个隐藏SSID的网络' ]); //连接一个开放的网络 QrCode::wiFi([ 'ssid' => '网络名称', ]); //连接一个开放并隐藏的网络. QrCode::wiFi([ 'ssid' => '网络名称', 'hidden' => 'true' ]); //连接一个加密的WIFI网络. QrCode::wiFi([ 'ssid' => '网络名称', 'encryption' => 'WPA', 'password' => '密码' ]);
                              Run code
                              Cut to clipboard


                                在 Laravel 之外使用

                                你还可以在Laravel框架之外调用,只需要实例化 BaconQrCodeGenerator 类.

                                use SimpleSoftwareIO\QrCode\BaconQrCodeGenerator; $qrcode = new BaconQrCodeGenerator; $qrcode->size(500)->generate('Welcome to LaravelAcademy!');
                                Run code
                                Cut to clipboard