//引用qrcode的命名空间 use Endroid\QrCode\Builder\Builder;use Endroid\QrCode\Color\Color;use Endroid\QrCode\Encoding\Encoding;use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelHigh;use Endroid\QrCode\Label\Font\NotoSans;use Endroid\QrCode\RoundBlockSizeMode\RoundBlockSizeModeMargin;use Endroid\QrCode\Writer\PngWriter;//我这里使用的是tp6框架,参数可以通过request获取请求参数 $param = request ()->param (); $result = Builder ::create () ->writer (new PngWriter ()) //图片的格式,一般都是png。也支持svg、pdf等 ->data ('二维码的内容' ) ->encoding (new Encoding ('UTF-8' )) // 设置编码格式 ->errorCorrectionLevel (new ErrorCorrectionLevelHigh ()) //设置错误级别,级别越改越容易识别 ->size (300 ) //设置二维码的大小,300px*300px ->foregroundColor (new Color ($param['color' ]['r' ],$param['color' ]['g' ],$param['color' ]['b' ])) //设置二维码的颜色 ->backgroundColor (new Color ($param['bg_color' ]['r' ],$param['bg_color' ]['g' ],$param['bg_color' ]['b' ])) //设置二维码的背景色 ->margin (10 ) //设置二维码与边框的距离,10px ->roundBlockSizeMode (new RoundBlockSizeModeMargin ());//设置圆角 //在底部添加标签,labelFont可以设置底部标签的字体大小。当然我们还可设置label的字体颜色 if (!empty ($param['label' ])){ $result = $result->labelText ($param['label' ])->labelFont (new NotoSans (20 )); }//二维码logo $file = $request->file ('file' );if ($file){ $result = $result->logoPath ($file->getPathname ()) //设置logo路径 ->logoResizeToHeight (80 ) // 设置logo在二维码上的高度 ->logoResizeToWidth (80 ); //设置logo在二维码上的宽度 }//打包 $buildResult = $result->build ();//输出 echo $buildResult->getString ()注意:最后输出的内容我们可以进行base64加密后再返回给前端。
如果你直接输出二进制的二维码,需要设置header('Content-Type: '.$result->getMimeType());
如果想要保存到本地,可以使用:$buildResult->saveToFile('图片的绝对路径');
3. 不使 用生成器
<?php // 设置关于二维码相关参数 $qrCode = \ Endroid\ QrCode\ QrCode ::create ('二维码的内容' ) ->setEncoding (new Encoding ('UTF-8' )) ->setErrorCorrectionLevel (new \ Endroid\ QrCode\ ErrorCorrectionLevel\ ErrorCorrectionLevelLow ()) ->setSize (300 ) ->setMargin (10 ) ->setRoundBlockSizeMode (new \ Endroid\ QrCode\ RoundBlockSizeMode\ RoundBlockSizeModeMargin ()) ->setForegroundColor (new \ Endroid\ QrCode\ Color\ Color (0 , 0 , 0 )) ->setBackgroundColor (new \ Endroid\ QrCode\ Color\ Color (255 , 255 , 255 ));// 设置二维码中间logo相关配置 $logo = \ Endroid\ QrCode\ Logo\ Logo ::create (__DIR__ .'/assets/symfony.png' ) ->setResizeToWidth (50 );// 设置底部标签相关配置类 $label = \ Endroid\ QrCode\ Label\ Label ::create ('标签' ) ->setTextColor (new \ Endroid\ QrCode\ Color\ Color (255 , 0 , 0 ));//创建图片对象 $writer = new \ Endroid\ QrCode\ Writer\ PngWriter ();//将配置信息写入图片对象中 $result = $writer->write ($qrCode,$logo,$label);//校验配置是否有问题,可以不校验 $writer->validateResult ($result, '异常时抛出的描述信息' );// 保存为文件 $result->saveToFile (__DIR__ .'/qrcode.png' );// 输出二维码 header ('Content-Type: ' .$result->getMimeType ());echo $result->getString ();
到此,这个qrcode的扩展就已经完成了。有什么不对的可以在我公众号留言哦
有兴趣的可以去我的博客网站体 验 【在线免费生成二维码 】
博客官网链接:https://motui8.cn/ImageTool/create_qrcode
PS:防止找不到本篇文章,可以收藏点赞,方便翻阅查找哦。
你的每个点赞和在看,我们都感恩在心 本站提示您:本站所载图文有部分来自网络,如有侵犯您的权益,请发邮件至wyl860211@qq.com,我们将在第一时间予以删除处理!
Copyright © 2019-2022 人人理财 All Rights Reserved丨冀ICP备2022005225号-6 丨网站地图 丨相关标签