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 n个不重复的随机数生成代码
Jun 23 PHP
PHP mcrypt可逆加密算法分析
Jul 19 PHP
php获取apk包信息的方法
Aug 15 PHP
destoon调用discuz论坛中带图片帖子的实现方法
Aug 21 PHP
PHP-Java-Bridge使用笔记
Sep 22 PHP
PHP5.2中PDO的简单使用方法
Mar 25 PHP
WordPress过滤垃圾评论的几种主要方法小结
Jul 11 PHP
Yii视图CGridView列表用法实例分析
Jul 12 PHP
php 实现Hash表功能实例详解
Nov 29 PHP
Yii2框架数据验证操作实例详解
May 02 PHP
PHP解析url并得到url参数方法总结
Oct 11 PHP
PHP调用接口API封装的例子
Oct 11 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 readfile下载大文件失败的解决方法
2017/05/22 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
强制设为首页代码
2006/06/19 Javascript
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
JS实现仿京东淘宝竖排二级导航
2014/12/08 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
JS组件Bootstrap实现弹出框效果代码
2016/04/26 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
javascript回到顶部特效
2016/07/30 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
Bootstrap CDN和本地化环境搭建
2016/10/26 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
带你了解session和cookie作用原理区别和用法
2017/08/14 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
2018/07/21 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
python实现按行切分文本文件的方法
2016/04/18 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
2020/06/01 Python
世界上最大的艺术和工艺用品商店:MisterArt.com
2018/07/13 全球购物
Ref与out有什么不同
2012/11/24 面试题
英语商务邀请函范文
2014/01/16 职场文书
毕业实习评语
2014/02/10 职场文书
最新大学生创业计划书写作攻略
2014/04/02 职场文书
个人校本研修方案
2014/05/26 职场文书
经济管理自荐书
2014/06/09 职场文书
拉拉队口号
2014/06/16 职场文书
孝敬父母的活动方案
2014/08/28 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
护理专业自我评价
2015/03/11 职场文书
Golang二维切片初始化的实现
2021/04/08 Golang
java executor包参数处理功能 
2022/02/15 Java/Android