PHPqrCode是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,
官方源码地址:
https://github.com/t0k4rt/phpqrcode
https://sourceforge.net/projects/phpqrcode/
下载地址:phpqrcode.1.1.5.zip
下载官网提供的类库后,只需要使用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表示是否保存二维码并 显示。
<?php //这是原版 phpqrcode 不支持 composer ,优势:require 引入方式可在新老旧项目上同时适用 //thinkphp6 放入 extend 目录 require_once \think\facade\App::getRootPath().'extend/phpqrcode/phpqrcode.php'; //其它框架自行引入 require_once ./phpqrcode/phpqrcode.php #进入主题 //1.配置与说明 $data = '测试生成1';//内容 $level = 'L';// 纠错级别:L、M、Q、H $size = 10;//元素尺寸 $margin = 1;//边距 $outfile = 'erweima.png'; $saveandprint = false;// true直接输出屏幕 false 保存到文件中 $back_color = 0xFFFFFF;//白色底色 $fore_color = 0x000000;//黑色二维码色 若传参数要hexdec处理,如 $fore_color = str_replace('#','0x',$fore_color); $fore_color = hexdec('0xCCCCCC'); // 可在 phpqrcode/phpqrcode.php 文件中修改以下配置 // define('QR_FIND_BEST_MASK', true); // true 每次生成码都会变换掩码 , false 时只要内容不变,生成图案不变 // define('QR_PNG_MAXIMUM_SIZE', 1024);//生成最大图片尺寸,若要更大的尺寸,可以自己修改,根据自身需求和服务器性能决定 //2.使用方法大全 $QRcode = new \QRcode(); // $QRcode = new QRcode(); //生成png图片 $QRcode->png($data, $outfile, $level, $size, $margin, false, $back_color, $fore_color); //生成svg图片 // $outfile = 'erweima.svg'; // $QRcode->svg($data, $outfile, $level, $size, $margin, false, $back_color, $fore_color); //生成eps图片 // $outfile = 'erweima.eps'; // $QRcode->eps($data, $outfile, $level, $size, $margin, false, $back_color, $fore_color); //保存到文本 1表示黑色点 0表示白色点 // $outfile = 'erweima.text'; // $outfile = false;//不设置 outfile 返回数组 // $text = $QRcode->text($data, $outfile, $level, $size, $margin); // print_R($text); echo $outfile; exit;
不生成二给码图片文件,直接获取二维码数据,生成base64
ob_start();//开启缓冲区 QRcode::png($qr, false, 'L', 10, 2);//生成二维码 $img = ob_get_contents();//获取缓冲区内容 $imgInfo = 'data:image/png;base64,' .base64_encode($img); ob_end_clean();//清除缓冲区内容 return ['img_base64'=>$imgInfo];