PHP使用QR Code生成二维码实例


Posted in PHP onJuly 07, 2021

使用PHP QR Code生成二维码

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使用QR Code生成二维码实例的文章就介绍到这了,更多相关PHP QR Code生成二维码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
桌面中心(三)修改数据库
Oct 09 PHP
实例(Smarty+FCKeditor新闻系统)
Jan 02 PHP
解析PHP中如何将数组变量写入文件
Jun 06 PHP
显示程序执行时间php函数代码
Aug 29 PHP
CentOS6.5 编译安装lnmp环境
Dec 21 PHP
php表单提交与$_POST实例分析
Jan 26 PHP
smarty的section嵌套循环用法示例
May 28 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
Oct 14 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
Sep 29 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
Nov 06 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
May 23 PHP
PHP Cli 模式设置进程名称的方法
Jun 12 PHP
PHP设计模式(观察者模式)
Jul 07 #PHP
eval(cmd)与eval($cmd)的区别与联系
用php如何解决大文件分片上传问题
Jul 07 #PHP
php 文件上传至OSS及删除远程阿里云OSS文件
Jul 04 #PHP
PHP实现两种排课方式
Linux系统下安装PHP7.3版本
详细分析PHP7与PHP5区别
Jun 26 #PHP
You might like
PHP页面间参数传递的四种方法详解
2013/06/09 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
javaScript 读取和设置文档元素的样式属性
2009/04/14 Javascript
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
extjs grid设置某列背景颜色和字体颜色的方法
2010/09/03 Javascript
JavaScript与Div对层定位和移动获得坐标的实现代码
2010/09/08 Javascript
基于jquery完美拖拽,可返回拖动轨迹
2012/03/29 Javascript
javascript 得到文件后缀名的思路及实现
2020/05/09 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
15个常用的jquery代码片段
2015/12/19 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
javascript实现循环广告条效果
2017/12/12 Javascript
详解三种方式解决vue中v-html元素中标签样式
2018/11/22 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
JS数组splice操作实例分析
2019/10/12 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
python中使用enumerate函数遍历元素实例
2014/06/16 Python
Python实现全局变量的两个解决方法
2014/07/03 Python
法国时尚品牌乐都特瑞士站:La Redoute瑞士
2016/09/05 全球购物
骆驼官方商城:CAMEL
2016/11/22 全球购物
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
精彩的推荐信范文
2013/11/26 职场文书
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
中药专业自荐信范文
2014/03/18 职场文书
实验室的标语
2014/06/20 职场文书
班组长安全工作职责
2014/07/15 职场文书
2014年教研组工作总结
2014/11/26 职场文书
慰问信模板
2015/02/14 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers
php+laravel 扫码二维码签到功能
2021/05/15 PHP
python中 Flask Web 表单的使用方法
2022/05/20 Python