首先下载这个类:http://phpqrcode.sourceforge.net/
phpqrcode.php 放在extend目录下面,如果有二级目录qrcode/phpqrcode.php就 Loader::import(‘qrcode.phpqrcode’, EXTEND_PATH);
一、上代码:
/**
* @param $text 文本的内容
* @param string $logo logo图片
* @return string TP5-PHP生成二维码
*/
public function code($text, $logo = '')
{
Loader::import('phpqrcode', EXTEND_PATH);
//二维码图片保存路径
$pathname = APP_PATH . '/../public/upload/';
if (!is_dir($pathname)) { //若目录不存在则创建之
mkdir($pathname);
}
//二维码图片保存路径(若不生成文件则设置为false)
$name = "/qrcode_" . time() . ".png";
$filename = $pathname . $name;
//二维码容错率,默认L
$level = "L";
//二维码图片每个黑点的像素,默认4
$size = '10';
//二维码边框的间距,默认2
$padding = 2;
//保存二维码图片并显示出来,$filename必须传递文件路径
$saveandprint = true;
//生成二维码图片
\QRcode::png($text, $filename, $level, $size, $padding, $saveandprint);
//二维码logo
$QR = imagecreatefromstring(file_get_contents($filename));
// $logo = imagecreatefromstring(file_get_contents($logo));
// $QR_width = imagesx($QR);
// $QR_height = imagesy($QR);
// $logo_width = imagesx($logo);
// $logo_height = imagesy($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, $filename);
return cdnurl('/upload' . $name, true);
}
第二步:cdnurl函数
/**
* 获取上传资源的CDN的地址
* @param string $url 资源相对地址
* @param boolean $domain 是否显示域名 或者直接传入域名
* @return string
*/
function cdnurl($url, $domain = false)
{
$regex = "/^((?:[a-z]+:)?\/\/|data:image\/)(.*)/i";
$cdnurl = \think\Config::get('upload.cdnurl');
$url = preg_match($regex, $url) || ($cdnurl && stripos($url, $cdnurl) === 0) ? $url : $cdnurl . $url;
if ($domain && !preg_match($regex, $url)) {
$domain = is_bool($domain) ? request()->domain() : $domain;
$url = $domain . $url;
}
return $url;
}
第三步:使用
/*二维码接口*/
public function qrcode()
{
$data = array();
$data['productid'] = mt_rand(1, 5); /*产品id 1-5*/
$data['user_id'] = mt_rand(1, 200); /*用户ID*/
$data['type'] = 1; /*1未核销 2已核销 3已锁定*/
$json = json_encode($data);
$qrcodeurl = self::code($json);
header("Location: " . $qrcodeurl);
}