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
我常用的几个类
Oct 09 PHP
php抓即时股票信息
Oct 09 PHP
PHP 程序员也要学会使用“异常”
Jun 16 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
Feb 05 PHP
php pki加密技术(openssl)详解
Jul 01 PHP
PHP禁止个别IP访问网站
Oct 30 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
Sep 22 PHP
CodeIgniter辅助之第三方类库third_party用法分析
Jan 20 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
Mar 22 PHP
PHP与Web页面的交互示例详解一
Aug 04 PHP
WordPress免插件实现面包屑导航的示例代码
Aug 20 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
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
PHP中的函数-- foreach()的用法详解
2013/06/24 PHP
PHP实现把数字ID转字母ID
2013/08/12 PHP
PHP 错误处理机制
2015/07/06 PHP
Yii实现Command任务处理的方法详解
2016/07/14 PHP
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
JavaScript数组常用操作技巧汇总
2014/11/17 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
2016/09/15 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
bootstrap-table实现服务器分页的示例 (spring 后台)
2017/09/01 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
Vue.js实现开发购物车功能的方法详解
2019/02/22 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
python切片及sys.argv[]用法详解
2018/05/25 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
简单了解django缓存方式及配置
2019/07/19 Python
Django时区详解
2019/07/24 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
2019/07/31 Python
检测tensorflow是否使用gpu进行计算的方式
2020/02/03 Python
基于python实现查询ip地址来源
2020/06/02 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
pytorch 查看cuda 版本方式
2020/06/23 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
python实现ping命令小程序
2020/12/28 Python
Python 打印自己设计的字体的实例讲解
2021/01/04 Python
Fabletics官网:美国运动服饰品牌,由好莱坞女演员凯特·哈德森创立
2019/10/19 全球购物
软件测试工程师笔试题带答案
2015/03/27 面试题
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
党性教育心得体会
2014/09/03 职场文书
会计师事务所实习证明
2014/11/16 职场文书
python如何查找列表中元素的位置
2022/05/30 Python
Windows7下FTP搭建图文教程
2022/08/05 Servers