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 出现乱码和Sessions验证问题的解决方法!
Dec 06 PHP
基于Windows下Apache PHP5.3.1安装教程
Jan 08 PHP
php写的带缓存数据功能的mysqli类
Sep 06 PHP
php mssql扩展SQL查询中文字段名解决方法
Oct 15 PHP
PHP JS Ip地址及域名格式检测代码
Sep 27 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
Jan 17 PHP
php绘制一个扇形的方法
Jan 24 PHP
必须收藏的23个php实用代码片段
Feb 02 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
浅析PHP中的闭包和匿名函数
Dec 25 PHP
laravel框架 api自定义全局异常处理方法
Oct 11 PHP
Laravel 前端资源配置教程
Oct 18 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
PHPlet在Windows下的安装
2006/10/09 PHP
php设计模式 Decorator(装饰模式)
2011/06/26 PHP
PHP防止注入攻击实例分析
2014/11/03 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
PHP ADODB实现分页功能简单示例
2018/05/25 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
2019/03/21 PHP
xtree.js 代码
2007/03/13 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
3种Jquery限制文本框只能输入数字字母的方法
2014/12/03 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
jQuery源码分析之Callbacks详解
2015/03/13 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
NodeJS仿WebApi路由示例
2017/02/28 NodeJs
Node.js数据库操作之连接MySQL数据库(一)
2017/03/04 Javascript
javascript操作元素的常见方法小结
2019/11/13 Javascript
vue a标签点击实现赋值方式
2020/09/07 Javascript
[01:10]DOTA2 Supermajor:英雄,由我们见证
2018/05/14 DOTA
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
2020/03/05 Python
GUESS盖尔斯法国官网:美国时尚品牌
2016/09/23 全球购物
银行实习人员自我鉴定
2013/09/22 职场文书
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
授权收款委托书
2014/09/23 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
小学生暑假安全公约
2015/07/14 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书
聘任书的格式及模板
2019/10/28 职场文书