PHP使用QR Code生成二维码实例

admin3年前PHP教程26
使用PHP QR Code生成二维码

HP QR Code是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,查看地址:

phpqrcode.sourceforge/

下载官网提供的类库后,只需要使用phpqrcode.php就可以生成二维码了,当然您的PHP环境必须开启支持GD2。

phpqrcode.php提供了一个关键的png()方法,其中

参数$text表示生成二位的的信息文本;

参数$outfile表示是否输出二维码图片 文件,默认否;

参数$level表示容错率,也就是有被覆盖的区域还能识别,分别是 L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%);

参数$size表示生成图片大小,默认是3;参数$margin表示二维码周围边框空白区域间距值;

参数$saveandprint表示是否保存二维码并显示。

. 代码如下:


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);  
}

调用PHP QR Code非常简单,如下代码即可生成一张内容为"cnblogs/txw1958/"的二维码.


include 'phpqrcode.php';
QRcode::png('cnblogs/txw1958/');

那么实际应用中,我们会在二维码的中间加上自己的LOGO,已增强宣传效果。那如何生成含有logo的二维码呢?其实原理很简单,先使用PHP QR Code生成一张二维码图片,然后再利用php的image相关函数,将事先准备好的logo图片加入到刚生成的原始二维码图片中间,然后重新生成一张新 的二维码图片。

. 代码如下:


include 'phpqrcode.php';   
$value = 'cnblogs/txw1958/'; //二维码内容  
$errorCorrectionLevel = 'L';//容错级别  
$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, 'helloweixin.png');  
echo '<img src="helloweixin.png">';
include 'phpqrcode.php';   
$value = 'cnblogs/txw1958/'; //二维码内容  
$errorCorrectionLevel = 'L';//容错级别  
$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, 'helloweixin.png');  
echo '<img src="helloweixin.png">';

由于二维码允许有一定的容错性,一般的二维码即使在遮住部分但仍然能够解码,经常我们扫描二维码的时候扫描到甚至不到一半时就能解码扫描结果,这是因为生成器会将部分信息重复表示来提高其容错度,这就是为什么我们在二维码中间加个LOGO图片并不影响解码结果的原因。

到此这篇关于PHP使用QR Code生成二维码实例的文章就介绍到这了,更多相关PHP QR Code生成二维码内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

详解PHP中的数据库连接持久化

目录PHP中的数据库连接持久化什么是数据库连接持久化连接持久化有什么用?效率对比注意总结PHP中的数据库连接持久化数据库的优化是我们做web开发的重中之重,甚至很多情况下其实我们是在面向数据库编程。当...

PHP扩展之kafka安装应用案例详解

话说用了就要有点产出,要不然过段时间又忘了,所以在这里就记录一下试用Kafka的安装过程和php扩展的试用。实话说,如果用于队列的话,跟PHP比较配的,还是Redis。用的顺手,呵呵,只是Redis不...

法国服务器在哪里购买便宜

法国服务器在哪里购买便宜?要购买便宜的法国服务器,您可以考虑以下几个方面:比较多家供应商的价格:在网络上搜索并比较各家法国服务器提供商的价格和服务内容,找到价格合理、服务质量好的供应商。节假日或者特别...

泉州高防服务器效果怎样

泉州高防服务器效果怎样?泉州高防服务器的效果取决于服务器的规格和高防技术的质量。如果服务器规格足够高,并且高防技术优秀,那么它可以有效地防御各种类型的攻击,例如DDoS攻击、CC攻击、SQL注入等等。...

显卡服务器的具体应用江西显卡服务器如何租用

显卡服务器,其实就是加装了独立显卡的物理服务器,用户可在里面运行自己的程序,通过远程桌面的方式运行一些有独立显卡需求的应用需求。为什么普通服务器是没有显卡的由于很多服务器是用于运行网站或者作为应用的服...

显卡服务器适用场合美国显卡服务器适合哪些行业

显卡服务器又被称之为GPU服务器,简单来说显卡服务器是基于GPU,应用于视频编解码、深度学习、科学计算等多种场景的快速、稳定、弹性的计算服务;显卡服务器有着非常出色的图形处理能力,并且也具有高性能计算...