当前位置: 首页 > 后端技术 > PHP

xampp环境下thinkphp5二维码的生成

时间:2023-03-30 00:20:16 PHP

前言由于团队功能的需要,我们需要用PHP创建一个action,可以根据我们给定的URL生成一个二维码。当我开始的时候,我走错了方向。当时我就想:既然要生成二维码,就要知道生成二维码的机制。于是在网上搜了一下二维码,得到了如下结果:我大致看完了,才明白:显然,这不是我想要的(如果我研究这个东西,我想我什么都不用做其他在接下来的几周内)。我走在正确的轨道上。虽然走错了方向,但我也简单的看懂了二维码。东西,那么如何实现我们需要的功能呢?这次我决定简单粗暴。谷歌没有骗我。有人在我之前写过这些功能,所以我开始走上正轨。总体思路我们需要的功能网上已经用php写好了,就像我们引用think中的库一样,我们只需要下载网上可以生成二维码的库,然后引用它,就可以了快速方便地生成二维码。想法确定了,就开始干活吧。笔者找了两个方法,最后使用了第二种方法一:Composer和endroid/QrCode提到php下载第三方库,就不得不提到composer。这是一款强大的php类库管理工具,可以帮助我们下载网上其他的类库。关于这个神奇的东西,官方文档中也有介绍(如下图)。目前笔者使用的是windows环境。按照官方文档中的链接下载,一路开开心心的next,然后问题就来了。这是我在网上找的照片(来自菜鸟教程:composer安装)。我安装的时候没有地址,所以一头雾水。这是什么意思?想了想,我们安装的管理工具是和php相关的,需要找到菜鸟教程图片中的php.exe文件,于是产生了下面的问题:php在哪里?XAMPP百度百科:XAMPP(Apache+MySQL+PHP+PERL)是一个强大的建站综合软件包。可见我们使用的xampp集成了php。接下来就是找文件,找文件。安装完成后,在我们的thinphp5文件夹下输入命令安装第三方库。$composerrequireendroid/qr-code这样,我们的库文件就加载好了,代码开发可以参考这篇博客http://www.cnbreak.org/biancheng/thinkphp5/wechatwebpage/760.html方法二:使用phpqrcode作者用的就是这个方法,使用起来比较简单(不过thinkphp6好像没有办法使用),我们直接下载第三方库下载地址https://sourceforge.net/projects/phpqrcode/files/releases官方文档http://phpqrcode.sourceforge.net/docs/html/annotated.html下载后注意:如果是extends目录,我们用composer下载的库在vendor里面,第三方的从外部下载的库只有放在extends中才有效。下面是第二种方法的代码//设置url$url1='https://www.baidu.com/s?wd=666&rsv_spt=1&rsv_iqid=0xfea0cab90000241d&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=ib=ug_4&rsv_3&rsv_7100&rsv_sug2=0&rsv_btype=i&inputT=528&rsv_sug4=1203';//容错级别$errorCorrectionLevel=$level;//生成图像大小$matrixPointSize=intval($size);//生成二维码图片$object=newQRcode();//这必须添加和清除Bufferob_end_clean();//第二个参数false表示不生成图片文件,如果写'picture.png',会在根目录下生成一个png格式的图片文件$object->png($url1,false,$errorCorrectionLevel,$matrixPointSize,2);}相关参数含义:png($text,$outfile=false,$level=QR_ECLEVEL_L,$size=4,$margin=4,$saveandprint=false,$back_color=0xFFFFFF,$fore_color=0x000000)$text为url参数$outfile默认没有,不会生成文件,只返回返回二维码图片,否则需要给保存路径$level二维码容错率,默认L(7%),M(15%),Q(25%),H(30%)$size二维码图片大小,默认4$margin二维码空白区域的大小$saveabdprint保存并显示二维码,$outfile必须通过路径$back_color背景色$fore_color绘制二维码的颜色tip:The颜色必须传递十六进制颜色值,并将“#”替换为“0x”;比如#FFFFFF=>0xFFFFFF总结一下,当我们要实现一个功能的时候,一般来说,这个东西已经有人在我们之前写好了,先自己研究这个功能,实现思路,然后再想办法,找相关文档方法,然后就可以实现功能了。参考博客:http://www.517php.com/tp/46.htmlhttp://www.cnbreak.org/bianch...版权声明本文版权所有,版权归梦云知软件开发所有河北工业大学团队。未经本团队及作者事先书面同意,您不得将本文内容用于商业用途或以任何方式通过信息网络传播本文内容。本文作者:文宇航