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 相关文章推荐
PHP中使用unset销毁变量并内存释放问题
Jul 05 PHP
PHP的5个安全措施小结
Jul 17 PHP
PHP连接局域网MYSQL数据库的简单实例
Aug 26 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
php实现的微信红包算法分析(非官方)
Sep 25 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
May 13 PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 PHP
PHP微信开发之微信录音临时转永久存储
Jan 26 PHP
微信JSSDK分享功能图文实例详解
Apr 08 PHP
解决tp5在nginx下修改配置访问的问题
Oct 16 PHP
php接口隔离原则实例分析
Nov 11 PHP
laravel数据库查询结果自动转数组修改实例
Feb 27 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编程与应用
2006/10/09 PHP
php 模拟POST|GET操作实现代码
2010/07/20 PHP
PHP Stream_*系列函数
2010/08/01 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
PDO::getAttribute讲解
2019/01/28 PHP
javascript操作JSON的要领总结
2012/12/09 Javascript
用js写了一个类似php的print_r输出换行功能
2013/02/18 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
javascript中函数作为参数调用的方法
2015/02/09 Javascript
使用JQuery在线制作ppt并在线演示源码特效
2015/09/08 Javascript
前端框架Vue.js中Directive知识详解
2016/09/12 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
NW.js 简介与使用方法
2018/02/01 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
vue组件之间数据传递的方法实例分析
2019/02/12 Javascript
js实现车辆管理系统
2020/08/26 Javascript
跟老齐学Python之用Python计算
2014/09/12 Python
python多重继承新算法C3介绍
2014/09/28 Python
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
详解Python requests 超时和重试的方法
2018/12/18 Python
使用python创建Excel工作簿及工作表过程图解
2020/05/27 Python
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
N.Peal官网:来自伦敦的高档羊绒品牌
2018/10/29 全球购物
蹦床仓库:Trampoline Warehouse
2018/12/06 全球购物
How TDD works
2012/09/30 面试题
教师个人自我评价范文
2014/04/13 职场文书
学校运动会霸气口号
2014/06/07 职场文书
第一书记观后感
2015/06/08 职场文书
六一儿童节致辞
2015/07/31 职场文书
入党后的感想
2015/08/10 职场文书
电力安全学习心得体会
2016/01/18 职场文书
图片批量处理 - 尺寸、格式、水印等
2022/03/07 杂记
python图像处理 PIL Image操作实例
2022/04/09 Python