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扩展开发经验分享
Sep 06 PHP
具有时效性的php加密解密函数代码
Jun 19 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
Jun 27 PHP
Yii扩展组件编写方法实例分析
Jun 29 PHP
Yii数据读取与跳转参数传递用法实例分析
Jul 12 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
Dec 02 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
Aug 10 PHP
快速解决PHP调用Word组件DCOM权限的问题
Dec 27 PHP
PHP结合Vue实现滚动底部加载效果
Dec 17 PHP
PHP实现用户登录的案例代码
May 10 PHP
PHP回调函数简单用法示例
May 08 PHP
Laravel框架表单验证操作实例分析
Sep 30 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模块memcache和memcached区别分析
2011/06/14 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
2014/11/22 PHP
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
2015/08/23 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
Javascript实现滚动图片新闻的实例代码
2013/11/27 Javascript
js文字横向滚动特效
2015/11/11 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
原生js封装二级城市下拉列表的实现代码
2016/06/16 Javascript
jQuery实现简单倒计时功能的方法
2016/07/04 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
Node.js实现注册邮箱激活功能的方法示例
2018/03/23 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
NodeJs实现简单的爬虫功能案例分析
2018/12/05 NodeJs
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
Vue页面切换和a链接的本质区别详解
2019/11/12 Javascript
JavaScript实现联动菜单特效
2020/01/07 Javascript
Node.JS获取GET,POST数据之queryString模块使用方法详解
2020/02/06 Javascript
在Python的框架中为MySQL实现restful接口的教程
2015/04/08 Python
Python3 处理JSON的实例详解
2017/10/29 Python
OpenCV读取与写入图片的实现
2020/10/13 Python
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
牛津在线药房:Oxford Online Pharmacy
2020/11/16 全球购物
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
创业者迈进成功第一步:如何写创业计划书?
2014/03/22 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
食品药品安全责任书
2015/05/11 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
Python加密技术之RSA加密解密的实现
2022/04/08 Python