PHP基于phpqrcode类生成二维码的方法示例详解


Posted in PHP onAugust 07, 2020

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基于phpqrcode类生成二维码的方法示例详解的文章就介绍到这了,更多相关phpqrcode类生成二维码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
提升PHP执行速度全攻略(上)
Oct 09 PHP
修改php.ini实现Mysql导入数据库文件最大限制的修改方法
Dec 11 PHP
php 自写函数代码 获取关键字 去超链接
Feb 08 PHP
php遍历所有文件及文件夹的方法深入解析
Jun 08 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
PHP的cURL库简介及使用示例
Feb 06 PHP
PHP时间类完整实例(非常实用)
Dec 25 PHP
Zend Framework入门知识点小结
Mar 19 PHP
thinkPHP实现MemCache分布式缓存功能
Mar 23 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
Oct 25 PHP
php实现URL加密解密的方法
Nov 17 PHP
PHP之header函数详解
Mar 02 PHP
php模拟post提交请求调用接口示例解析
Aug 07 #PHP
基于PHP+mysql实现新闻发布系统的开发
Aug 06 #PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
Aug 06 #PHP
基于PHP的登录和注册的功能的实现
Aug 06 #PHP
php中try catch捕获异常实例详解
Aug 06 #PHP
PHP日期和时间函数的使用示例详解
Aug 06 #PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
Aug 06 #PHP
You might like
php strlen mb_strlen计算中英文混排字符串长度
2009/07/10 PHP
php 截取字符串并以零补齐str_pad() 函数
2011/05/07 PHP
PHP中集成PayPal标准支付的实现方法分享
2012/02/06 PHP
PHP 观察者模式的实现代码
2013/05/10 PHP
深入php常用函数的使用汇总
2013/06/08 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
2017/11/06 PHP
关于锚点跳转及jQuery下相关操作与插件
2012/10/01 Javascript
学习JavaScript编程语言的8张思维导图分享
2015/03/27 Javascript
JavaScript数据结构与算法之链表
2016/01/29 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
vue计算属性get和set用法示例
2019/02/08 Javascript
解决vue+webpack项目接口跨域出现的问题
2020/08/10 Javascript
Python之eval()函数危险性浅析
2014/07/03 Python
Python中的异常处理学习笔记
2015/01/28 Python
理解Python中函数的参数
2015/04/27 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
详解基于python的多张不同宽高图片拼接成大图
2019/09/26 Python
Django模型验证器介绍与源码分析
2020/09/08 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
python爬取微博评论的实例讲解
2021/01/15 Python
html5 div布局与table布局详解
2016/11/16 HTML / CSS
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
什么是规则表达式
2012/05/03 面试题
精彩的大学生自我评价
2013/11/17 职场文书
公司委托书格式范文
2014/04/04 职场文书
市政管理求职信范文
2014/05/07 职场文书
民族精神月活动总结
2014/08/28 职场文书
新教师个人总结
2015/02/06 职场文书
主题班会开场白
2015/06/01 职场文书
实习证明格式范文
2015/06/16 职场文书
安全教育第一课观后感
2015/06/17 职场文书
有关水浒传的读书笔记
2015/06/25 职场文书
PyMongo 查询数据的实现
2021/06/28 Python
python井字棋游戏实现人机对战
2022/04/28 Python
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android