共计 2432 个字符,预计需要花费 7 分钟才能阅读完成。
前言
因为团队性能须要,咱们须要用 php 做一个能依据咱们的给出的 URL 生成二维码的 action,过程波折,做进去之后在这里总结一下。
开始动手
开始的时候,走了谬误的方向,过后的想法:既然要生成二维码,那就要晓得二维码的生成机制,于是我在网上搜二维码,失去了如下后果:
我粗略读了一遍之后顿悟:显然,这不是我想要的(如果钻研这货色,预计将来几周不必干别的了)
步入正轨
我尽管走错了方向,然而也简略的理解了二维码这个货色,那么咱们须要的性能该如何实现呢?这次我决定简略粗犷一点
谷歌诚不欺我,在我之前曾经有人写好了这些个性能,于是我开始步入正轨。
整体思路
- 咱们须要的性能在网上曾经有人用 php 写好了,就像咱们援用 think 外面的库一样,咱们只有把网上能生成二维码的库下载下来,而后援用它,就能快捷便当的生成二维码了。思路确定了,开始干活。
笔者发现了两种方法,最初应用了第二种
办法一:Composer 与 endroid/QrCode
- 提到 php 下载第三方库,就必须提到 composer 了,这是 php 的一个贼厉害的库管理工具,能够帮忙咱们下载网上的其余类库,对于这个神奇的货色,官网文档当中也有介绍(如下图)
- 目前笔者用的是 windows 环境,依照官网文档当中的链接下载好,开始高兴的一路 next,而后问题就来了
这是我在网上找到的照片(源自菜鸟教程:composer 装置),我装置的时候,并没有地址呈现,于是我就懵了,这是什么意思?
思考了一下,咱们装置的这个管理工具是和 php 分割的,并且须要找到菜鸟教程图片当中的 php.exe 文件,于是引出了上面的问题:php 在哪里?
- XAMPP
百度百科:XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包。由此可知,咱们应用的 xampp 外面集成了 php,下一步,开始找文件
找到文件,装置实现,在咱们的 thinphp5 文件夹下,输出指令来装置好第三方库
$ composer require endroid/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 下载好的库在 vender 外面,而里面下载的第三方库只有放在 extends 外面才会起作用。
如下是第二种办法的代码
function qrcode($level = 'L', $size = 4){
// 导入 Phpqrcode 插件文件 require_once EXTEND_PATH.'phpqrcode/phpqrcode.php';
// 设置 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&rsv_sug3=4&rsv_sug1=3&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=528&rsv_sug4=1203';
// 容错级别
$errorCorrectionLevel = $level;
// 生成图片大小
$matrixPointSize = intval($size);
// 生成二维码图片
$object = new QRcode();
// 这个肯定要加上,革除缓冲区
ob_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: 色彩必须传 16 进制的色值,并把“#”替换为“0x”; 如 #FFFFFF => 0xFFFFFF
总结
咱们想要实现一个性能的时候,一般来说在咱们之前都会有人曾经写出这个货色来了,首先本人去钻研这个性能的实现思路,而后去想方法,找到相干的文档办法,就能够实现性能了。
参考博客:
http://www.517php.com/tp/46.html
http://www.cnbreak.org/bianch…
版权申明
本文保留所有权力,版权归河北工业大学梦云智软件开发团队所有。未经团队及作者当时书面批准,您不得以任何形式将本文内容进行商业性应用或通过信息网络流传本文内容。本文作者:温宇航