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 相关文章推荐
eWebEditor v3.8 商业完整版 (PHP)
Dec 06 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
Jul 01 PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 PHP
thinkphp3.0输出重复两次的解决方法
Dec 19 PHP
php使用ob_flush不能每隔一秒输出原理分析
Jun 02 PHP
php项目中百度 UEditor 简单安装调试和调用
Jul 15 PHP
实现PHP框架系列文章(6)mysql数据库方法
Mar 04 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
Mar 18 PHP
PHP中抽象类和抽象方法概念与用法分析
May 24 PHP
php+js实现百度地图多点标注的方法
Nov 30 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
Mar 31 PHP
PHP 序列化和反序列化函数实例详解
Jul 18 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 session劫持和防范的方法
2013/11/12 PHP
PHP获取表单所有复选框的值的方法
2014/08/28 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
2011/09/20 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
js跳转页面方法总结
2014/01/29 Javascript
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
Nodejs初级阶段之express
2015/11/23 NodeJs
基于jquery实现日历签到功能
2020/09/11 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
Vue.js实现简单ToDoList 前期准备(一)
2016/12/01 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
详解vue 命名视图
2019/08/14 Javascript
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
Python聚类算法之DBSACN实例分析
2015/11/20 Python
Python网络爬虫神器PyQuery的基本使用教程
2018/02/03 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
python爬虫中PhantomJS加载页面的实例方法
2020/11/12 Python
python如何获得list或numpy数组中最大元素对应的索引
2020/11/16 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
浅谈html5标签css3的常用样式
2016/10/20 HTML / CSS
印度化妆品购物网站:Nykaa
2018/07/22 全球购物
化工专业应届生求职信
2013/11/08 职场文书
后勤主管岗位职责
2014/03/01 职场文书
银行金融服务方案
2014/06/11 职场文书
优秀工作者事迹材料
2014/12/26 职场文书
90条交通安全宣传标语
2019/10/12 职场文书
Python基础教程,Python入门教程(超详细)
2021/06/24 Python