PHP生成二维码的必要条件
- PHP环境开启GD2扩展
- 引用第三方的二维码库
1、第三方库文件下载
库名称:phpqrcode,这是一个开源的库。下载地址:https://sourceforge.net/projects/phpqrcode/
下载回来的压缩包里一大堆文件,我们只用其中一个:phpqrcode.php 这个文件里包含了生成二维码的所有代码,就是同级目录里的其他文件,如果你感兴趣也可以一个个的添加和调用。
我们只需要PHPQRCode.php这一个文件,把这个文件拷贝到你的项目文件夹
2、如何调用库函数
function qrcode($url){ require_once 'phpqrcode.php'; $value = $url; //二维码内容 $errorCorrectionLevel = 'L'; //容错级别 $matrixPointSize = 5; //生成图片大小 //生成二维码图片 $QR = QRcode::png($value,false,$errorCorrectionLevel, $matrixPointSize, 2); } //调用查看结果 qrcode('https://www.baidu.com');
上面代码中,单次引用了phpqrcode.php库文件,然后,传入url参数,注意函数的用法:
QRcode::png($value,false,$errorCorrectionLevel, $matrixPointSize, 2);
- 参数1:$value:是二维码的内容
- 参数2:$outfile:本例是false,这默认为false,不生成文件,只将二维码图片返回输出;否则需要给出存放生成二维码图片的文件名及路径;
- 参数3:$level:默认为L,这个参数可传递的值分别是L(QR_ECLEVEL_L,7%)、M(QR_ECLEVEL_M,15%)、Q(QR_ECLEVEL_Q,25%)、H(QR_ECLEVEL_H,30%),这个参数控制二维码容错率,不同的参数表示二维码可被覆盖的区域百分比,也就是被覆盖的区域还能识别;
- 参数4:$size:控制生成图片的大小,默认为4;
- 参数5:$margin:控制生成二维码的空白区域大小;
- 参数6:$saveandprint:保存二维码图片并显示出来,$outfile必须传递图片路径;
请注意:以上代码执行后会直接在浏览器显示一个二维码图片,如果在你的php页面调用qrcode()函数,则会出现错误。
3、如何在页面中调用二维码图片
因为上面的代码生成的数据格式不是html格式的,当在html页面直接调用qrcode函数时会发生headers信息错误,导致二维码不显示。正确的做法是在需要展示二维码的地方,用一个img标签,src属性是包含qrcode函数的php文件。
<img src="qrcode.php" />
如果要生成动态的二维码,还可以给qrcode.php传递参数,或者通过其他方式获取数据,这部分就很灵活了。
4、如何在服务器生成一个二维码文件
这样的需求可能不多,但也不复杂,只需要给第二个参数,传递位置信息就可以了。
function qrcode1($url=''){ require_once 'phpqrcode.php'; $value = $url; //二维码内容 $errorCorrectionLevel = 'L'; //容错级别 $matrixPointSize = 5; //生成图片大小 //生成二维码图片 $filename = 'qrcode/'.microtime().'.png'; // QRcode::png($value,$filename , $errorCorrectionLevel, $matrixPointSize, 2); $QR = $filename; //已经生成的原始二维码图片文件 $QR = imagecreatefromstring(file_get_contents($QR)); //输出图片 imagepng($QR,'qrcode.png'); imagedestroy($QR); return '<img src="qrcode.png">'; } //调用查看结果 echo qrcode1('https://www.baidu.com');
这个函数会在当前目录下的qrcode目录生成二维码文件。然后用img标签显现出来,这个函数可以再php页面中直接调用。