下面由thinkphp框架教程栏目给大家介绍Tp框架生成二维码的方法,希望对需要的朋友有所帮助!
基础环境系统环境:Windows10 x64PHP集成环境:phpstudyPHP依赖管理工具:Composer
(一) 安装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::alnum15); $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) ->setPadding15) ->setErrorCorrection'high') ->setForegroundColorarray'r' => 0, 'g' => 0, 'b' => 0, 'a' => 0)) ->setBackgroundColorarray'r' => 255, 'g' => 255, 'b' => 255, 'a' => 0)) ->setImageTypeQrCode::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::alnum15); $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) ->setSize300) ->setLogo$logo) ->setLogoSize60) ->setErrorCorrection'high') ->setForegroundColorarray'r' => 0, 'g' => 0, 'b' => 0, 'a' => 0)) ->setBackgroundColorarray'r' => 255, 'g' => 255, 'b' => 255, 'a' => 0)) ->setImageTypeQrCode::IMAGE_TYPE_PNG); $qrCode->save$pathname); $str="/qrcode/".$n."/". $img_name . '.png'; if $domain){ return request)->domain).$str; }else{ return $str; } } }