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 相关文章推荐
初学者入门:细述PHP4的核心Zend
Sep 05 PHP
怎样在UNIX系统下安装MySQL
Oct 09 PHP
php cli 方式 在crotab中运行解决
Feb 08 PHP
定义php常量的详解
Jun 09 PHP
PHP删除数组中特定元素的两种方法
Jul 02 PHP
ThinkPHP独立分组使用的注意事项
Nov 25 PHP
PHP防止刷新重复提交页面的示例代码
Nov 11 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
Dec 18 PHP
php文件上传、下载和删除示例
Aug 28 PHP
php中请求url的五种方法总结
Jul 13 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
Oct 11 PHP
基于laravel belongsTo使用详解
Oct 18 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生成静态HTML文档的原理
2012/10/29 PHP
解析php中获取url与物理路径的总结
2013/06/21 PHP
PHP无限分类(树形类)
2013/09/28 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
2019/03/07 PHP
jQuery中$.each使用详解
2015/01/29 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
2016/12/31 Javascript
angular十大常见问题
2017/03/07 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
node使用Mongoose类库实现简单的增删改查
2018/11/08 Javascript
使用Node.js实现一个多人游戏服务器引擎
2019/03/13 Javascript
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
打开电脑上的QQ的python代码
2013/02/10 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
python 多维切片之冒号和三个点的用法介绍
2018/04/19 Python
python实现汉诺塔算法
2021/03/01 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
Python 可变类型和不可变类型及引用过程解析
2019/09/27 Python
Python3 mmap内存映射文件示例解析
2020/03/23 Python
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
Hotels.com泰国:酒店预订网站
2019/11/20 全球购物
Ejb技术面试题
2015/04/29 面试题
临床医学应届生求职信
2013/11/06 职场文书
自荐书格式
2013/12/01 职场文书
中专毕业生的自我鉴定
2013/12/01 职场文书
日本语毕业生自荐信
2014/02/01 职场文书
学生自我评价范文
2014/02/02 职场文书
2014年防汛工作总结
2014/12/08 职场文书
写给女朋友的保证书
2015/05/09 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
Windows下用Nginx配置https服务器及反向代理的问题
2021/09/25 Servers
python如何读取和存储dict()与.json格式文件
2022/06/25 Python