<?php
namespace app\admin\controller;
class Qrcode
{
//表示項目主目錄名稱,其他表示二維碼的配置項
private $config = ['level'=>'L','size'=>"12",'margin'=>"2",'save'=>true,'upload_url_name'=>'uploads'];//默認配置
/*
*$content: 表示要生成二維碼的字符串
*$file_url:表示二維碼上傳的路徑,從項目主目錄名下一級算起
*$name:表示最裏面那一級的目錄,主要作用如不填則默認爲當天日期,填寫了則爲填寫的目錄
*$end_name: 表示文件名,不填寫則系統隨機
*$config: 表示二維碼的配置項
**/
//根據字符串創建二維碼
public function create_code($content='',$file_url='',$name='',$end_name='',$config = []){
if($name == ''){
$name = date('Ymd',time());
}
if(empty($config)){
$config = $this->config;
}
if($end_name == ''){
$end_name = date("YmdHis").mt_rand(1000,9999).'.png';
}
$file_url = $file_url."/".$name."/";
$get_file_url = $this->deal_file_url($file_url);
Vendor('phpqrcode');//引入文件
$content = $content;
$outfile = $get_file_url['b'].$end_name;
$level = $config['level'];
$size = $config['size'];
$margin = $config['margin'];
$save = $config['save'];
$res = \QRcode::png($content, $outfile, $level, $size, $margin, $save);
return '/'.$config['upload_url_name'].'/'.$file_url.$end_name;//切記:如果你的項目是將域名直接解析到項目的public目錄下的,需要你改一些返回的路勁,如果是解析到項目根目錄下的情況,則不需要改
}
//處理url以便創建目錄
public function deal_file_url($file_url){
$url_arr = explode('/',$file_url);
foreach($url_arr as $key=>$val){
if($val != '..' && $val != '.' && $val != ''){
$data[] = $val;
}
}
$file_url = ROOT_PATH.implode("\\",$data).'\\';
$up_url = str_replace('\\',"/",$file_url);
$data_arr['a'] = $file_url;
$data_arr['b'] = $up_url;
if(!is_dir($file_url)){
mkdir($file_url,0777,true);
}
return $data_arr;
}
}