转载【TP3.2】:使用PHP生成二维码
转载:在网上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生成二维码的更多相关文章
- 使用jquery.qrcode生成二维码及常见问题解决方案
转载文章 使用jquery.qrcode生成二维码及常见问题解决方案 一.jquery.qrcode.js介 jquery.qrcode.js 是一个纯浏览器 生成 QRcode 的 jQuery ...
- 转载---QRcodeJS生成二维码
QRCode.js QRCode.js是依赖JS生成二维码的.主要是通过获取DOM的标签,再通过HTML5Canvas绘制而成,不依赖JQ 获取QRCode.js Github-Page:qrcode ...
- 生成二维码图片(tp3.2)
下载二维码库 放在适合的地方 生成二维码 这里存在表里 效果(查看时)
- 使用jquery-qrcode生成二维码(转载)
一.使用jquery-qrcode生成二维码 先简单说一下jquery-qrcode,这个开源的三方库(可以从https://github.com/jeromeetienne/jquery-qrcod ...
- js生成二维码(jquery自带)
//引入js<script type="text/javascript" src="js/jquery.js"></script> &l ...
- C# Qrcode生成二维码支持中文,带图片,带文字 2015-01-22 15:11 616人阅读 评论(1) 收藏
1.下载Qrcode库源码,下载地址:http://www.codeproject.com/Articles/20574/Open-Source-QRCode-Library 2.打开源码时,部分类库 ...
- thinkphp整合系列之phpqrcode生成二维码
php生成二维码其实挺简单的:当然指的是使用qrcode类库: 因此关于是否要写这篇博客:我是犹豫了再三的: 不过最后还是决定写下吧:如果有童鞋急着用:就可以直接引了: 再个也可以作为即将写的文章微信 ...
- 使用PHP二维码生成类库PHP QR Code生成二维码
<?php include 'phpqrcode.php'; $value = 'http://www.helloweba.com'; //二维码内容 $errorCorrectionLevel ...
- Laravel5中通过SimpleQrCode扩展包生成二维码实例
Simple Qrcode是基于强大的Bacon/BaconQrCode库开发的针对Laravel框架的封装版本,用于在Laravel中为生成二维码提供接口. 安装SimpleQrCode扩展包 在项 ...
随机推荐
- ndk 开发
5.用NDK来编译程序 1. 现在我们用安装好的NDK来编译一个简单的程序吧,我们选择ndk自带的例子hello-jni,我的位于E:/android-ndk-r5/samples/hello-jn ...
- mysql访问权限GRANT ALL PRIVILEGES ON,访问权限表
开启远程连接:2, 修改 Mysql-Server 用户配置mysql> USE mysql; -- 切换到 mysql DBDatabase changedmysql> SELECT U ...
- RTC设备驱动
问题:pcf8563 RTC设备驱动不能被正常的加载!问题分析过程. 问题在下午得到解决,虽然解决的办法比较笨,采用的是不断的使用printk来跟踪rtc-8563驱动的加载的过程,以及iic模块的工 ...
- 第四章 mybatis批量insert
批量插入sql语句: INSERT INTO table (field1,field2,field3) VALUES ('a',"b","c"), ('a',& ...
- Android 时间日期Widget 开发详解
桌面Widget其实就是一个显示一些信息的工具(现在也有人开发了一些有实际操作功能的widget.例如相机widget,可以直接桌面拍照).不过总的来说,widget主要功能就是显示一些信息.我们今天 ...
- iOS开发-iPad侧边栏Tab选项卡切换
Android中习惯了叫侧边栏,iOS中如果不习惯侧边栏称呼的话可以叫dock,侧边栏的切换,类似于Android中的底部导航栏的切换,iPad尺寸大了一些,导航的栏目放在侧边会显示的更好耐看一些.选 ...
- iOS开发-UINavigationController简单介绍
导航条或者说导航栏目现在在App中基本上也算是标配,类似于父子级别的味道在里面,UINavigationController就是负责简化这一实现功能的,属于iOS开发中比较常用的一种容器View co ...
- Eclipse上传代码到GitHub
平时工作学习中难免会在Github搜索一下开源的Android代码, Android系统本身的代码就是托管在GitHub上,如果平时随手做了一个Demo,托管在云盘感觉不入流,如果平时自己一时兴起写了 ...
- Android 如何去掉手机中横竖屏切换时的转屏动画?
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- 使用gitolite进行git服务器搭建
使用gitolite进行git服务器搭建 https://blog.csdn.net/pan0755/article/details/78460941 使用gitolite搭建,然后需要有个客户端进行 ...