转载:在网上down了一个二维码插件PHPQRcode,整合到了ThinkPHP 3.2.3,然后写了个外部自定义函数直接调用生成二维码,根据参数不同有不同尺寸效果,整合其实挺简单,分享给大家!

今天做项目时要用到生成二维码这个功能,就研究了一下二维码。二维码的原理可以先看看,理解理解

环境支持:GD库、文件夹可写权限

1、原版的PHPQRcode下载地址>> :http://ncu.dl.sourceforge.net/project/phpqrcode/releases/phpqrcode-2010100721_1.1.4.zip

2、下载后,只需要其中一个文件就可以完成本功能了,如下图所示文件:

3、将phpqrcode.php放置到:ThinkPHP/Library/Vendor/PHPQRcode/phpqrcode.php (注意大小写哦)
注意:现在放置的是thinkPHP默认的第三方类库目录。

4、创建用户自定义函数文件Application/Home/Common/function.php,放置如下函数:

/**
* 功能:生成二维码
* @param string $qr_data 手机扫描后要跳转的网址
* @param string $qr_level 默认纠错比例 分为L、M、Q、H四个等级,H代表最高纠错能力
* @param string $qr_size 二维码图大小,1-10可选,数字越大图片尺寸越大
* @param string $save_path 图片存储路径
* @param string $save_prefix 图片名称前缀
*/
function createQRcode($save_path,$qr_data='PHP QR Code :)',$qr_level='L',$qr_size=4,$save_prefix='qrcode'){
if(!isset($save_path)) return '';
//设置生成png图片的路径
$PNG_TEMP_DIR = & $save_path;
//导入二维码核心程序
vendor('PHPQRcode.phpqrcode'); //PHPQRcode是文件夹名字,phpqrcode就代表phpqrcode.php文件名
//检测并创建生成文件夹
if (!file_exists($PNG_TEMP_DIR)){
mkdir($PNG_TEMP_DIR);
}
$filename = $PNG_TEMP_DIR.'test.png';
$errorCorrectionLevel = 'L';
if (isset($qr_level) && in_array($qr_level, array('L','M','Q','H'))){
$errorCorrectionLevel = & $qr_level;
}
$matrixPointSize = 4;
if (isset($qr_size)){
$matrixPointSize = & min(max((int)$qr_size, 1), 10);
}
if (isset($qr_data)) {
if (trim($qr_data) == ''){
die('data cannot be empty!');
}
//生成文件名 文件路径+图片名字前缀+md5(名称)+.png
$filename = $PNG_TEMP_DIR.$save_prefix.md5($qr_data.'|'.$errorCorrectionLevel.'|'.$matrixPointSize).'.png';
//开始生成
QRcode::png($qr_data, $filename, $errorCorrectionLevel, $matrixPointSize, 2);
} else {
//默认生成
QRcode::png('PHP QR Code :)', $filename, $errorCorrectionLevel, $matrixPointSize, 2);
}
if(file_exists($PNG_TEMP_DIR.basename($filename)))
return basename($filename);
else
return FALSE;
}

5、开始调用,假设通过网址/index.php/Home/Index/qrcode访问,那我们相应的在Application/Home/Controller/IndexController.class.php文件里加入方法,如下:

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
/*
* 自定义生成二维码 -xzz0815
* 使用vender里第三方类库文件,使用GD库
*/
public function qrcode(){
$save_path = isset($_GET['save_path'])?$_GET['save_path']:'./Public/qrcode/'; //图片存储的绝对路径
$web_path = isset($_GET['save_path'])?$_GET['web_path']:'/Public/qrcode/'; //图片在网页上显示的路径
$qr_data = isset($_GET['qr_data'])?$_GET['qr_data']:'http://www.xxiangfang.com/';
$qr_level = isset($_GET['qr_level'])?$_GET['qr_level']:'H';
$qr_size = isset($_GET['qr_size'])?$_GET['qr_size']:'10';
$save_prefix = isset($_GET['save_prefix'])?$_GET['save_prefix']:'ZETA';
if($filename = createQRcode($save_path,$qr_data,$qr_level,$qr_size,$save_prefix)){
$pic = $web_path.$filename;
}
echo "<img src='".$pic."'>";
} }

6、附不同参数生成的不同图片尺寸:

7、生成的效果如下:

8、直接下载文件包地址传送门:http://www.thinkphp.cn//code/download/id/1283.html

转载【TP3.2】:使用PHP生成二维码的更多相关文章

  1. 使用jquery.qrcode生成二维码及常见问题解决方案

    转载文章  使用jquery.qrcode生成二维码及常见问题解决方案 一.jquery.qrcode.js介 jquery.qrcode.js 是一个纯浏览器 生成 QRcode 的 jQuery ...

  2. 转载---QRcodeJS生成二维码

    QRCode.js QRCode.js是依赖JS生成二维码的.主要是通过获取DOM的标签,再通过HTML5Canvas绘制而成,不依赖JQ 获取QRCode.js Github-Page:qrcode ...

  3. 生成二维码图片(tp3.2)

    下载二维码库 放在适合的地方 生成二维码 这里存在表里 效果(查看时)

  4. 使用jquery-qrcode生成二维码(转载)

    一.使用jquery-qrcode生成二维码 先简单说一下jquery-qrcode,这个开源的三方库(可以从https://github.com/jeromeetienne/jquery-qrcod ...

  5. js生成二维码(jquery自带)

    //引入js<script type="text/javascript" src="js/jquery.js"></script> &l ...

  6. C# Qrcode生成二维码支持中文,带图片,带文字 2015-01-22 15:11 616人阅读 评论(1) 收藏

    1.下载Qrcode库源码,下载地址:http://www.codeproject.com/Articles/20574/Open-Source-QRCode-Library 2.打开源码时,部分类库 ...

  7. thinkphp整合系列之phpqrcode生成二维码

    php生成二维码其实挺简单的:当然指的是使用qrcode类库: 因此关于是否要写这篇博客:我是犹豫了再三的: 不过最后还是决定写下吧:如果有童鞋急着用:就可以直接引了: 再个也可以作为即将写的文章微信 ...

  8. 使用PHP二维码生成类库PHP QR Code生成二维码

    <?php include 'phpqrcode.php'; $value = 'http://www.helloweba.com'; //二维码内容 $errorCorrectionLevel ...

  9. Laravel5中通过SimpleQrCode扩展包生成二维码实例

    Simple Qrcode是基于强大的Bacon/BaconQrCode库开发的针对Laravel框架的封装版本,用于在Laravel中为生成二维码提供接口. 安装SimpleQrCode扩展包 在项 ...

随机推荐

  1. Android Gradle Plugin指南(四)——測试

    原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Testing 5.Testing(測试) 构建一个測试 ...

  2. ping + 时间 日志

    :top set PINGIP="192.168.1.236" echo %date% %time%>>%PINGIP%.txt ping -n 1 %PINGIP% ...

  3. 局部敏感哈希 Kernelized Locality-Sensitive Hashing Page

    Kernelized Locality-Sensitive Hashing Page   Brian Kulis (1) and Kristen Grauman (2)(1) UC Berkeley ...

  4. 5.synchronized锁重入

    package demo1; /** * synchronized锁重入 * Created by liudan on 2017/6/5. */ public class MyThread5_sync ...

  5. jquery json实现二级动态联动

    以下为代码!需要导入json架包 function getCity1(){ var unitid = document.getElementById('addformunitid').value; $ ...

  6. Multi-label && Multi-label classification

    Multi-label classification with Keras In today’s blog post you learned how to perform multi-label cl ...

  7. SQL Server AlwaysOn Setup Step-By-Step Guide

    Step-By-Step: Creating a SQL Server 2012 AlwaysOn Availability Group http://blogs.technet.com/b/cani ...

  8. 如何在Windows 7 或Vista中修改MTU

    Windows操作系统使用Maximum Transmission Unit (MTU) 来确定在下面的网络层上可以传输的协议数据包(protocol data packet)的最大尺寸. MTU参数 ...

  9. SoundPool 音频播放 API 详解【示例】

    demo地址:https://github.com/baiqiantao/PermissionTest.git 一个大坑:SoundPool最多只能播放时长10s左右.大小70kb左右(这些值是我多次 ...

  10. Android实现仿qq侧边栏效果

    最近从github上看到一个关于侧边栏的项目,模仿的是qq侧边栏. Github地址是https://github.com/SpecialCyCi/AndroidResideMenu ,这个项目是一个 ...