0527网
您的当前位置:首页Tp框架如何生成二维码

Tp框架如何生成二维码

来源:0527网


下面由thinkphp框架教程栏目给大家介绍Tp框架生成二维码的方法,希望对需要的朋友有所帮助!

  • 基础环境
  • 系统环境:Windows10 x
  • PHP集成环境:phpstudy
  • PHP依赖管理工具:Composer
  • (一) 安装qr-code扩展

    composer require endroid/qr-code

    (二)代码实现(代码亲测有效)

    <?php
    namespace appcommonservice;
    
    use JrkRandom;
    use EndroidQrCodeQrCode;
    use thinkException;
    
    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 (EndroidQrCodeExceptionsImageTypeInvalidException $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;
     }
     }
    
    }
    显示全文