PHP QR Code 是一个 PHP 二维码生成类库,利用它我们可以很轻松地生成二维码,本站近期新增了一个扫二维码在手机端查看的功能,所以,想顺便分享一下使用 PHP 类库 PHP QR Code 生成二维码的实现方法,PHP 环境需要开启支持 GD2 扩展库支持,一般情况下都是开启状态。
实现方法
实现方法很简单,我们只需要下载类库,下载后在接口文件中引用即可。
官网地址:http://phpqrcode.sourceforge.net/
类库地址:https://sourceforge.net/projects/phpqrcode/
1、下载类库
从官网下载类库,下载后解压,将 phpqrcode.php 这个文件上传到根目录下,假设根目录为 /www/wwwroot/api/qrcode/,如下图所示:
2、方法解读
生成二维码用到 phpqrcode.php 文件中的 QRcode 类中的 png() 方法:
public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false) { $enc = QRencode::factory($level, $size, $margin); return $enc->encodePNG($text, $outfile, $saveandprint=false); }
[mark_a]第 1 个参数 $text:二维码包含的内容,可以是链接、文字、json字符串等等;
第 2 个参数 $outfile:默认为false,不生成文件,只将二维码图片返回输出;否则需要给出存放生成二维码图片的文件名及路径;
第 3 个参数 $level:表示容错率,也就是有被覆盖的区域还能识别,有四个值,分别是 L:7%,M:15%,Q:25%,H:30%,默认为 L;
第 4 个参数 $size:控制生成图片的大小,默认为4;
第 5 个参数 $margin:控制生成二维码的空白区域大小;
第 6 个参数 $saveandprint:保存二维码图片并显示出来,$outfile必须传递图片路径;[/mark_a]
3、编写接口文件
在 qrcode 文件夹下新建 api.php 文件,内容如下:
<?php include 'phpqrcode.php'; $value = "https://www.pieruo.com/215.html"; $errorCorrectionLevel = 'L'; //容错级别 $matrixPointSize = 6; //生成图片大小 // 生成二维码图片 //$filename = 'images/'.time().'.png'; // 指定存放目录,需手动新建该目录 $filename = 'qrcode.png'; QRcode::png($value, $filename, $errorCorrectionLevel, $matrixPointSize, 2); // 输出二维码图片 echo '<img src="qrcode.png">';
4、浏览器访问
在浏览器中访问 https://api.pieruo.com/qrcode/api.php, 域名换成自己的,在浏览器中会展示生成的二维码图片,另外,该图片会保存到 qrcode 文件夹下。
预览效果如下 :
生成带 LOGO 的二维码
如果想生成带 LOGO 的二维码,可以使用上文中的方法先生成二维码图片,然后利用 PHP 的 image 相关函数,将 LOGO 合成到二维码图片中,重新生成一张新的图片。
1、实现方法及代码
需要将准备好的 LOGO 图片上传到根目录下,参考代码如下:
<?php include 'phpqrcode.php'; $value = 'https://www.pieruo.com/216.html'; $errorCorrectionLevel = 'Q';//容错级别 $matrixPointSize = 6;//生成图片大小 QRcode::png($value, 'qrcode.png', $errorCorrectionLevel, $matrixPointSize, 2); //生成二维码图片 $logo = 'logo.png';//准备好的logo图片 $QR = 'qrcode.png';//已经生成的原始二维码图 if ($logo !== FALSE) { $QR = imagecreatefromstring(file_get_contents($QR)); $logo = imagecreatefromstring(file_get_contents($logo)); $QR_width = imagesx($QR);//二维码图片宽度 $QR_height = imagesy($QR);//二维码图片高度 $logo_width = imagesx($logo);//logo图片宽度 $logo_height = imagesy($logo);//logo图片高度 $logo_qr_width = $QR_width / 5; $scale = $logo_width/$logo_qr_width; $logo_qr_height = $logo_height/$scale; $from_width = ($QR_width - $logo_qr_width) / 2; //重新组合图片并调整大小 imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); } //输出图片 imagepng($QR, 'qrcodelogo.png'); // 输出二维码图片 echo '<img src="qrcodelogo.png">';
2、预览效果
在浏览器中访问,效果如下:
温馨提示:如果生成的二维码无法识别,可以将容错级别调大一点。
补充说明
在官方的示例 DEMO 中,我们可以得知,除了引 phpqrcode.php 文件外,还可以引用 qrlib.php 这个文件,推荐引用 qrlib.php 的形式生成二维码。
1、官方用例
关于这两个文件,官方说明如下:
/** * qrlib.php for full version (also you have to provide all library files form package plus cache dir) * OR phpqrcode.php for merged version (only one file, but slower and less accurate code because disabled cache and quicker masking configured) */
这两句话解释:
# 包含 qrlib.php 的话需要提供全部的类库文件,需要我们上传整个类库文件夹。 # phpqrcode.php 是合并后版本,只需要包含这个文件,但生成的图片速度慢而且不太准确。
2、说明事项
从上述解释我们已经知道,引用 qrlib.php 文件的话,需要上传整个类库文件夹:
3、参考代码
引用 qrlib.php (需要上传整个类库文件夹),参考代码如下:
<?php include './phpqrcode/qrlib.php'; $value = "https://www.pieruo.com/215.html"; $errorCorrectionLevel = 'L'; //容错级别 $matrixPointSize = 6; //生成图片大小 // 生成二维码图片 $filename = 'qrcode.png'; // $filename = dirname(__FILE__) . DIRECTORY_SEPARATOR. 'images'. DIRECTORY_SEPARATOR . time() . '.jpg'; // 指定存放目录,需要使用绝对路径 QRcode::png($value, $filename, $errorCorrectionLevel, $matrixPointSize, 2); // 输出二维码图片 echo '<img src="qrcode.png">';
结束语
使用 PHP QR Code 类库我们可以很轻松地将链接、文字以及图片等生成二维码,二维码是动态的,可以不用在本地生成图片,支持自定义二维码大小,边距,跳转地址等。如果有任何意见或建议,欢迎在下方评论处留言。