转载:在网上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. 聊聊高并发(十四)理解Java中的管程,条件队列,Condition以及实现一个堵塞队列

    这篇里面有一些主要的概念,理解概念是件有意义的事情,仅仅有理解概念才干在面对详细问题的时候找到正确的解决思路.先看一下管程的概念 第一次在书上看到管程这个中文名称认为非常迷糊,管程究竟是个什么东东,于 ...

  2. 《Windows核心编程》第八章——用户模式下的线程同步

    下面起了两个线程,每个对一个全局变量加500次,不假思索进行回答,会认为最后这个全局变量的值会是1000,然而事实并不是这样: #include<iostream> #include &l ...

  3. 如何解决Maven速度慢

    注:oschina已失效 Maven 远程仓库 <mirror> <id>ui</id> <mirrorOf>central</mirrorOf& ...

  4. Spring 远程服务

    稍微看了一下Spring的远程服务章节,讲到了RMI,Hessian,Burlap,Http invoker以及JAX-WS 1.RMI 原理: 1)在Spring服务端使用RmiServiceExp ...

  5. Java操作Mongodb 保存/读取java对象到/从mongodb

    从http://central.maven.org/maven2/org/mongodb/mongo-java-driver/选择一个版本进行下载,这里选择的是3.0.0版本,具体下载以下jar包: ...

  6. Visual Studio 2013键盘码农常用快捷键

    声明及广告 所有功能针对C#开发配置而写,面向人群是喜欢键盘操作而非鼠标操作的开发者.部分功能可能由插件提供,我会尽可能标注出相应的插件名称.为行文方便,所有快捷键以大写形式表示.太常用的快捷键,如C ...

  7. DeDeCMS(织梦)变量覆盖0day getshell

    测试方法: @Sebug.net   dis本站提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负! #!usr/bin/php -w <?php error_reporting( ...

  8. 上下变换中 aspect的选择

    在电视制作还没有完全整转到高清之前,有很多原来的SD素材需要转到HD信号进入高清切换或者编辑平台,电视台是电视节目的发射源端 ,所以上变换过程不能引入额外的噪声或者失真: 上变换使用的方式一般有4种: ...

  9. 国内各视频网站android pad客户端支持分辨率情况初步统计

    视频网站名称 800*600 1024*600 1280*800 其他 国际化   备注 优酷 支持 支持 支持 支持 不支持     土豆网 没有pad版的 没有pad版的 没有pad版的 支持 不 ...

  10. SqlServer数据库(可疑)解决办法4种

     亲自试过,可行!!!!! SqlServer数据库(可疑)解决办法4种   重启服务--------------------------------------------------日志文件丢了, ...