ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

ThinkPHP5 生成二维码

2021-04-07 20:02:32  阅读:218  来源: 互联网

标签:domain QR url ThinkPHP5 生成 width 二维码 logo


首先下载这个类:http://phpqrcode.sourceforge.net/

phpqrcode.php 放在extend目录下面,如果有二级目录qrcode/phpqrcode.php就 Loader::import(‘qrcode.phpqrcode’, EXTEND_PATH);

一、上代码:

/**
     * @param $text 文本的内容
     * @param string $logo logo图片
     * @return string TP5-PHP生成二维码
     */
    public function code($text, $logo = '')
    {
        Loader::import('phpqrcode', EXTEND_PATH);
        //二维码图片保存路径
        $pathname = APP_PATH . '/../public/upload/';
        if (!is_dir($pathname)) { //若目录不存在则创建之
            mkdir($pathname);
        }
        //二维码图片保存路径(若不生成文件则设置为false)
        $name = "/qrcode_" . time() . ".png";
        $filename = $pathname . $name;
        //二维码容错率,默认L
        $level = "L";
        //二维码图片每个黑点的像素,默认4
        $size = '10';
        //二维码边框的间距,默认2
        $padding = 2;
        //保存二维码图片并显示出来,$filename必须传递文件路径
        $saveandprint = true;
        //生成二维码图片
        \QRcode::png($text, $filename, $level, $size, $padding, $saveandprint);
        //二维码logo
        $QR = imagecreatefromstring(file_get_contents($filename));
//        $logo = imagecreatefromstring(file_get_contents($logo));
//        $QR_width = imagesx($QR);
//        $QR_height = imagesy($QR);
//        $logo_width = imagesx($logo);
//        $logo_height = imagesy($logo);
//        $logo_qr_width = $QR_width / 5;
//        $scale = $logo_width / $logo_qr_width;
//        $logo_qr_height = $logo_height / $scale;
//        $from_width = ($QR_width - $logo_qr_width) / 2;
//        imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
//        imagepng($QR, $filename);
        return cdnurl('/upload' . $name, true);
    }

第二步:cdnurl函数

/**
     * 获取上传资源的CDN的地址
     * @param string  $url    资源相对地址
     * @param boolean $domain 是否显示域名 或者直接传入域名
     * @return string
     */
    function cdnurl($url, $domain = false)
    {
        $regex = "/^((?:[a-z]+:)?\/\/|data:image\/)(.*)/i";
        $cdnurl = \think\Config::get('upload.cdnurl');
        $url = preg_match($regex, $url) || ($cdnurl && stripos($url, $cdnurl) === 0) ? $url : $cdnurl . $url;
        if ($domain && !preg_match($regex, $url)) {
            $domain = is_bool($domain) ? request()->domain() : $domain;
            $url = $domain . $url;
        }
        return $url;
    }

第三步:使用

/*二维码接口*/
    public function qrcode()
    {
        $data = array();
        $data['productid'] = mt_rand(1, 5);   /*产品id 1-5*/
        $data['user_id'] = mt_rand(1, 200);   /*用户ID*/
        $data['type'] = 1;   /*1未核销 2已核销 3已锁定*/
        $json = json_encode($data);
        $qrcodeurl = self::code($json);
        header("Location: " . $qrcodeurl);
    }

标签:domain,QR,url,ThinkPHP5,生成,width,二维码,logo
来源: https://blog.csdn.net/qq_34050360/article/details/115493681

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有