Thinkphp中没有二维码相关的生成库,百度有不少工具和库 这里就实例一下通过think3.2搭配phpqrcode来完成生成二维码的功能。
至于phpQrcode库文件 百度很容易找到这里也给大家放个链接
下载地址:https://sourceforge.net/projects/phpqrcode/files/latest/download?source=typ_redirect
放置到Thinkphp框架的类文件下
在“ThinkPHPLibraryVendor”下新建目录phpqrcode,将压缩包内容解压到该文件夹下。
这里就简单介绍下使用Index控制器。
在IndexController控制器下添加如下方法:
public function qrcode($url="www.baidu.com",$level=3,$size=4)
{
Vendor('phpqrcode.phpqrcode');
$errorCorrectionLevel =intval($level) ;//容错级别也就是误差
$matrixPointSize = intval($size);//生成二维码图片大小
//生成二维码图片
$object = new QRcode();
$object->png($url, false, $errorCorrectionLevel, $matrixPointSize, 2);
// 使用 -> 或 :: 都可以
//$object::png($url, false, $errorCorrectionLevel, $matrixPointSize, 2);
}
这样直接访问你的地址路径 就可以看到二维码。
但是这样二维码 只是生成了 如果想效果更好 比如说 带logo 或者自定义等等......
这里再教大家 使用phpqrcode 实现代logo的二维码
先调用phpqrcode生成一张二维码,再使用PHP的image相关函数将logo图片添加到生成的二维码图片上。
这里我直接放置在项目根目录下了 具体的位置小伙伴们自己定 。
public function index($url='http://www.baidu.com',$level=3,$size=20){
Vendor('phpqrcode.phpqrcode');//引入PHPQrcode
$Level =intval($level) ;//容错级别
$matrixPointSize = intval($size);//生成图片大小
//生成二维码图片
//echo $_SERVER['REQUEST_URI'];
$url1 = "http://baidu.com";
$object = new QRcode();
$time = time();
$object::png($url1, $time.'.png', $Level, $matrixPointSize, 2);
$logo = 'logo.png';//准备好想要放置的logo图片
$QR = $time.'.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, $time.'hc.png');
echo '<img src='.__ROOT__.'/'.$time.'hc.png width="100px" height="100px">';
$img =__ROOT__.'/'.$time.'hc.png';
sleep(10);//10秒后删除
unlink($img);生成删除这个二维码
}
到此两种二维码的生成以经结束 大家自己试验一下吧!