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程序
Oct 09 PHP
php 无限级 SelectTree 类
May 19 PHP
PHP 服务器配置(使用Apache及IIS两种方法)
Jun 01 PHP
PHP中的float类型使用说明
Jul 27 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
Mar 09 PHP
php中JSON的使用与转换
Jan 14 PHP
在openSUSE42.1下编译安装PHP7 的方法
Dec 24 PHP
Symfony2联合查询实现方法
Mar 18 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
May 19 PHP
php简单计算年龄的方法(周岁与虚岁)
Dec 06 PHP
php创建图像具体步骤
Mar 13 PHP
PHP命名空间与自动加载类详解
Sep 04 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
星际原理概述
2020/03/04 星际争霸
咖啡知识大全
2021/03/03 新手入门
PHP 采集程序 常用函数
2008/12/18 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
php等比例缩放图片及剪切图片代码分享
2016/02/13 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
PHPStrom 新建FTP项目以及在线操作教程
2016/10/16 PHP
不错的asp中显示新闻的功能
2006/10/13 Javascript
js表数据排序 sort table data
2009/02/18 Javascript
javascript RadioButtonList获取选中值
2009/04/09 Javascript
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
js动态生成指定行数的表格
2013/07/11 Javascript
js兼容的placeholder属性详解
2013/08/18 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
js实现根据身份证号自动生成出生日期
2015/12/15 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
JS实现队列的先进先出功能示例
2017/05/10 Javascript
vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)
2018/08/24 Javascript
如何用JavaScript实现功能齐全的单链表详解
2019/02/11 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
对python判断ip是否可达的实例详解
2019/01/31 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
2020/02/12 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
4s店市场专员岗位职责
2014/04/09 职场文书
家长给老师的感谢信
2015/01/20 职场文书
因工资原因离职的辞职信范文
2015/05/12 职场文书
公司备用金管理制度
2015/08/04 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python
python模拟浏览器 使用selenium进入好友QQ空间并留言
2022/04/12 Python