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 相关文章推荐
Oracle Faq(Oracle的版本)
Oct 09 PHP
php中的时间显示
Jan 18 PHP
php AJAX实例根据邮编自动完成地址信息
Nov 23 PHP
php实现首页链接查询 友情链接检查的代码
Jan 05 PHP
php Smarty模板生成html文档的方法
Apr 12 PHP
PHP小技巧之函数重载
Jun 02 PHP
php生成圆角图片的方法
Apr 07 PHP
PHP安装memcached扩展笔记
May 28 PHP
浅谈PHP值mysql操作类
Jun 29 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 PHP
thinkPHP框架RBAC实现原理分析
Feb 01 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
Feb 22 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
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
php动态绑定变量的用法
2015/06/16 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
一个符号插入器 中用到的js代码
2007/09/04 Javascript
javascript下4个跨浏览器必备的函数
2010/03/07 Javascript
jquery获取input的value问题说明
2010/08/19 Javascript
JavaScript 小型打飞机游戏实现原理说明
2010/10/28 Javascript
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
非常棒的jQuery图片轮播效果
2016/04/17 Javascript
小程序实现多选框功能
2018/10/30 Javascript
Vue $mount实战之实现消息弹窗组件
2019/04/22 Javascript
[04:03]DOTA2肉山黑名单梦之声 风暴之灵中文配音鉴赏
2013/07/03 DOTA
python让图片按照exif信息里的创建时间进行排序的方法
2015/03/16 Python
举例讲解Python编程中对线程锁的使用
2016/07/12 Python
TensorFlow入门使用 tf.train.Saver()保存模型
2018/04/24 Python
Python Gitlab Api 使用方法
2019/08/28 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
python中sympy库求常微分方程的用法
2020/04/28 Python
Expedia爱尔兰:酒店、机票、租车及廉价假期
2017/01/02 全球购物
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
初中生自我评价
2014/02/01 职场文书
教师通用专业自荐书范文
2014/02/11 职场文书
汽车促销活动方案
2014/03/31 职场文书
广播节目策划方案
2014/05/23 职场文书
安全生产标语
2014/06/06 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
英文升职感谢信
2015/01/23 职场文书
团代会邀请函
2015/02/02 职场文书
建议书范文
2015/02/05 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书