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


Posted in PHP onJuly 07, 2021

使用PHP QR Code生成二维码

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

http://phpqrcode.sourceforge.net/

下载官网提供的类库后,只需要使用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非常简单,如下代码即可生成一张内容为"http://www.cnblogs.com/txw1958/"的二维码.

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

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

. 代码如下:

include 'phpqrcode.php';    
$value = 'http://www.cnblogs.com/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 = 'http://www.cnblogs.com/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验证码代码
Feb 27 PHP
PHP 基于文件头的文件类型验证类函数
May 01 PHP
php中长文章分页显示实现代码
Sep 29 PHP
php合并js请求的例子
Nov 01 PHP
php递归json类实例
Dec 02 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
Dec 25 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
Feb 04 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
php表单加入Token防止重复提交的方法分析
Oct 10 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
PHP+jQuery实现即点即改功能示例
Feb 21 PHP
简单实用的PHP文本缓存类实例
Mar 22 PHP
PHP设计模式(观察者模式)
Jul 07 #PHP
eval(cmd)与eval($cmd)的区别与联系
用php如何解决大文件分片上传问题
Jul 07 #PHP
php 文件上传至OSS及删除远程阿里云OSS文件
Jul 04 #PHP
PHP实现两种排课方式
Linux系统下安装PHP7.3版本
详细分析PHP7与PHP5区别
Jun 26 #PHP
You might like
PHP header函数分析详解
2011/08/06 PHP
深入php中var_dump方法的使用详解
2013/06/24 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
在Mac上编译安装PHP7的开发环境
2015/07/28 PHP
php发送短信验证码完成注册功能
2015/11/24 PHP
Smarty日期时间操作方法示例
2016/11/15 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
PHP数字金额转换成中文大写显示
2019/01/05 PHP
jQuery Validate插件实现表单验证
2016/08/19 Javascript
vue监听scroll的坑的解决方法
2017/09/07 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
vue实现表格过滤功能
2019/09/27 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
详解vue之自行实现派发与广播(dispatch与broadcast)
2021/01/19 Vue.js
python list使用示例 list中找连续的数字
2014/01/27 Python
Python深入学习之特殊方法与多范式
2014/08/31 Python
python搭建虚拟环境的步骤详解
2016/09/27 Python
Python3利用Dlib19.7实现摄像头人脸识别的方法
2018/05/11 Python
Python微信操控itchat的方法
2019/05/31 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
python opencv调用笔记本摄像头
2019/08/28 Python
python实现代码统计程序
2019/09/19 Python
Python3列表List入门知识附实例
2020/02/09 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
Python selenium环境搭建实现过程解析
2020/09/08 Python
汽修专业自荐信
2014/07/07 职场文书
市场营销毕业求职信
2014/08/07 职场文书
小学向国旗敬礼活动方案
2014/09/27 职场文书
标准离婚协议书(2014版)
2014/10/05 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
怒海潜将观后感
2015/06/11 职场文书
欢迎新生标语2015
2015/07/16 职场文书
法院执行局工作总结
2015/08/11 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python
国产动画《万圣街》日语配音版制作决定!
2022/03/20 国漫