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 程式大小
Dec 06 PHP
PHP中HTTP方式下的Gzip压缩传输方法举偶
Feb 15 PHP
PHP中如何判断AJAX提交的数据
Feb 05 PHP
php读取3389的脚本
May 06 PHP
在PHP中运行Linux命令并启动SSH服务的例子
Jun 12 PHP
PHP生成器简单实例
May 13 PHP
php 利用socket发送HTTP请求(GET,POST)
Aug 24 PHP
百度地图API使用方法详解
Aug 25 PHP
大家须知简单的php性能优化注意点
Jan 04 PHP
让你的PHP7更快之Hugepage用法分析
May 31 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
Oct 29 PHP
PHP一个简单的无需刷新爬虫
Jan 05 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
索尼ICF-SW100收音机评测
2021/03/02 无线电
修改PHP的memory_limit限制的方法分享
2012/02/21 PHP
smarty基础之拼接字符串的详解
2013/06/18 PHP
php使用pack处理二进制文件的方法
2014/07/03 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
javascript数组去掉重复
2011/05/12 Javascript
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
使用js对select动态添加和删除OPTION示例代码
2013/08/12 Javascript
jQuery获得内容和属性方法及示例
2013/12/02 Javascript
动态加载dtree.js树treeview(示例代码)
2013/12/17 Javascript
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
js中for in语句的用法讲解
2015/04/24 Javascript
input file上传 图片预览功能实例代码
2016/10/25 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
Node.js利用debug模块打印出调试日志的方法
2017/04/25 Javascript
angular基于ng-alain定义自己的select组件示例
2018/02/23 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
js+canvas实现两张图片合并成一张图片的方法
2019/11/01 Javascript
python正则实现计算器功能
2017/12/14 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
python中for循环变量作用域及用法详解
2019/11/05 Python
在pycharm创建scrapy项目的实现步骤
2020/12/01 Python
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
教育系毕业生中文求职信范文
2013/10/06 职场文书
初中学校军训方案
2014/05/09 职场文书
学生会竞选演讲稿怎么写
2014/08/26 职场文书
2014党员干部四风问题对照检查材料思想汇报
2014/09/24 职场文书
2014年林业工作总结
2014/12/05 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers