下面由thinkphp框架教程栏目给大家介绍Tp框架生成二维码的方法,希望对需要的朋友有所帮助!
(一) 安装qr-code扩展
composer require endroid/qr-code
(二)代码实现(代码亲测有效)
<?php namespace app\common\service; use Jrk\Random; use Endroid\QrCode\QrCode; use think\Exception; class QrcodeSrvice { /** * @param $text * @param int $size * @param bool $domain * @return string * @author: Hhy <jackhhy520@qq.com> * @describe:生成普通二维码 */ public static function make_qrcode($text,$size=105,$domain=false){ $img_name = Random::alnum(15); $n = date("Ym"); $dir= app()->getRootPath()."public/qrcode/code/".$n; //判断目录是否存在 if (!is_dir($dir)) { mkdir($dir, 0777, true); } $pathname = $dir."/" . $img_name . '.png'; $qrCode = new QrCode(); $qrCode->setText($text) ->setSize($size) ->setPadding(15) ->setErrorCorrection('high') ->setForegroundColor(array('r' => 0, 'g' => 0, 'b' => 0, 'a' => 0)) ->setBackgroundColor(array('r' => 255, 'g' => 255, 'b' => 255, 'a' => 0)) ->setImageType(QrCode::IMAGE_TYPE_PNG); try { $qrCode->save($pathname); $str="/qrcode/code/".$n."/". $img_name . '.png'; if ($domain){ return request()->domain().$str; }else{ return $str; } } catch (\Endroid\QrCode\Exceptions\ImageTypeInvalidException $exception) { return ""; } } /** * @param $text * @param $logo * @return string * @throws Exception * @author: Hhy <jackhhy520@qq.com> * @describe:生成带logo 的二维码 */ public static function QrCodeWithLogo($text,$logo,$domain=false){ if (!file_exists($logo)){ exception("logo地址不存在"); } $img_name = Random::alnum(15); $n = date("Ym"); $dir= app()->getRootPath()."public/qrcode/".$n; //判断目录是否存在 if (!is_dir($dir)) { mkdir($dir, 0777, true); } $pathname = $dir."/" . $img_name . '.png'; $qrCode = new QrCode(); $qrCode->setText($text) ->setSize(300) ->setLogo($logo) ->setLogoSize(60) ->setErrorCorrection('high') ->setForegroundColor(array('r' => 0, 'g' => 0, 'b' => 0, 'a' => 0)) ->setBackgroundColor(array('r' => 255, 'g' => 255, 'b' => 255, 'a' => 0)) ->setImageType(QrCode::IMAGE_TYPE_PNG); $qrCode->save($pathname); $str="/qrcode/".$n."/". $img_name . '.png'; if ($domain){ return request()->domain().$str; }else{ return $str; } } }