登录

thinkphp6 实现生成二维码的两种方法

php笔记
0 219

第一种生成二维码及背景图片合成 

下载phpqrcode类库

然后放到公共库中 extend

001

控制器中实现

/use think\Loader;

//Loader::import('phpqrcode.phpqrcode');

require "../vendor/phpqrcode/phpqrcode.php";

// 背景图路径           

$backPath = ROOT_PATH . 'public/static/qr/1.png';       

 // 获取背景图信息imagecreatefromstring — 从字符串中的图像流新建一图像        

$back = imagecreatefromstring(file_get_contents($backPath));       

 list($backWidth $backHight $backType) = getimagesize($backPath); 

//getimagesize — 取得图像大小                 //字体引入        

$font = ROOT_PATH . 'public/static/qr/ping.ttf';        

$black = imagecolorallocate($back 255 255 255); 

//字体颜色 RGB       

 $textContent = '添加时间:2021-08-10 10:36:20 '; //内容        

$fontSize = 16; //字体大小        

$circleSize = 0; //旋转角度        

$left =10;//左边距        

$top = 200; //顶边距       

 imagefttext($back $fontSize $circleSize $left $top $black $font $textContent);        

// 设置保存二维码文件路径       

 $qrcode = ROOT_PATH . 'public/static/qr/erweima.png';//网址或者是文本内容        

//二维码带的参数$url        

$url = "/";       

 //生成二维码的函数        

\QRcode::png($url $qrcode 'Q');     

  // 获取二维码的图片信息   

$qrcodeImg = imagecreatefromstring(file_get_contents($qrcode));       

list($qrcodeWidth $qrcodeHight $qrcodeType) = getimagesize($qrcode);       

 imagecopymerge($back $qrcodeImg 120 350 0 0 $qrcodeWidth $qrcodeHight 100);       

 header('Content-Type:image/png');       

 imagepng($backROOT_PATH.'public/static/qr/hecheng_erweima.png');       

 // 销毁       

 imagedestroy($back);        

imagedestroy($qrcodeImg);        

echo ' <img src="static/qr/hecheng_erweima.png" alt="">';

第二种方法

 public function qrcode()    {       

 //header("Content-type:image/png");        

//require "../vendor/phpqrcode/phpqrcode.php";        

$data=request()->post();        

$qRcode = new \QRcode();        

//假数据 -- 删除        

$data = ['单位'=>'医院'];        

$data = json_encode($data);//网址或者是文本内容       

 // 纠错级别:L、M、Q、H        

$level = 'L';        

// 点的大小:1到10用于手机端4就可以了        

$size = 10;        

// 生成的文件名        

$qRcode->png($data false $level $size);       

 $imagestring = base64_encode(ob_get_contents());       

 ob_end_clean();       

 //return "<img src='data:image/png;base64{$imagestring}'  />";        

return json($imagestring);    

}

发表评论

0 个回复