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 相关文章推荐
二十行语句实现从Excel到mysql的转化
Oct 09 PHP
MYSQL数据库初学者使用指南
Nov 16 PHP
实用函数10
Nov 08 PHP
PHP+jQuery实现自动补全功能源码
May 15 PHP
php启用zlib压缩文件的配置方法
Jun 12 PHP
PHP 验证码不显示只有一个小红叉的解决方法
Sep 30 PHP
带密匙的php加密解密示例分享
Jan 29 PHP
四个常见html网页乱码问题及解决办法
Sep 08 PHP
php生成4位数字验证码的实现代码
Nov 23 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
tp5.1框架数据库子查询操作实例分析
May 26 PHP
如何用PHP实现多线程编程
May 26 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
使用eAccelerator加密PHP程序
2008/10/03 PHP
PHP获取文件后缀名的三个函数
2012/10/15 PHP
基于xcache的配置与使用详解
2013/06/18 PHP
动态加载js的几种方法
2006/10/23 Javascript
JavaScript对象模型-执行模型
2008/04/28 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
2014/05/28 Javascript
JavaScript中字符串分割函数split用法实例
2015/04/07 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
jQuery实现Tab选项卡切换效果简单演示
2015/11/23 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
Angular工具方法学习
2016/12/26 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
bootstrap confirmation按钮提示组件使用详解
2017/08/22 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
基于node.js实现爬虫的讲解
2019/02/18 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
2019/06/21 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
Python使用matplotlib绘制动画的方法
2015/05/20 Python
Python输出9*9乘法表的方法
2015/05/25 Python
python妹子图简单爬虫实例
2015/07/07 Python
1分钟快速生成用于网页内容提取的xslt
2018/02/23 Python
python 读取鼠标点击坐标的实例
2018/12/29 Python
Python QQBot库的QQ聊天机器人
2019/06/19 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
Python新手如何进行闭包时绑定变量操作
2020/05/29 Python
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
高校教师自荐信范文
2014/03/13 职场文书
伊琍体标语
2014/06/25 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
小学生作文写作技巧100例,非常实用!
2019/07/08 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python