just do it

thinkphp5生成二维码,带logo,支持添加文字

1.首先我们先下载一下phpqrcode类库,需要用到phpqrcode类库.
2.取出phpqrcode文件夹,然后放到extend文件夹里面.
3.在控制器里面写入并调用以下方法,即可看到你要的二维码了.

《thinkphp5生成二维码,带logo,支持添加文字》

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 public function qr() {
        $house = Db::name('house')->where('id', input('id'))->find();
 
        $info = url('member/house/index', ['id' => $house['id']], true, true);
 
        $qr_name = 'house_' . $house['id'] . '.png';
        $pic = DIR_IMAGE . 'images/qrcode/' . $qr_name;
 
        import('phpqrcode.phpqrcode', EXTEND_PATH, '.php');
        $errorCorrectionLevel = "H";
        $matrixPointSize = "10";
        \QRcode::png($info, $pic, $errorCorrectionLevel, $matrixPointSize);
        $logo = ROOT_PATH . 'public/static/image/sbyp2.png'; //准备好的logo图片
        $QR = $pic;      //已经生成的原始二维码图
        if (file_exists($logo)) {
 
            //字体大小
            $size = 45;
            //字体类型,本例为黑体
            $font = ROOT_PATH . 'public/static/assets/fonts/simsun.ttc';
            //显示的文字
            $text = $house['name'];
            $logo = imagecreatefromstring(file_get_contents($logo)); // 加载已有图像
            //设置字体颜色
            $black = ImageColorAllocate($logo, 0, 0, 0);
            //将ttf文字写到图片中
            imagettftext($logo, $size, 0, 100, 385, $black, $font, $text);
            imagettftext($logo, $size, 0, 101, 385, $black, $font, $text);
 
            $QR = imagecreatefromstring(file_get_contents($QR));    //目标图象连接资源。
            $QR_width = imagesx($QR);      //二维码图片宽度
            $QR_height = imagesy($QR);     //二维码图片高度
            $logo_width = imagesx($logo);    //logo图片宽度
            $logo_height = imagesy($logo);   //logo图片高度
            $logo_qr_width = $QR_width / 4;   //组合之后logo的宽度(占二维码的1/5)
            $scale = $logo_width / $logo_qr_width;  //logo的宽度缩放比(本身宽度/组合后的宽度)
            $logo_qr_height = $logo_height / $scale; //组合之后logo的高度
            $from_width = ($QR_width - $logo_qr_width) / 2;  //组合之后logo左上角所在坐标点
            //重新组合图片并调整大小
            /*
             * imagecopyresampled() 将一幅图像(源图象)中的一块正方形区域拷贝到另一个图像中
             */
            imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
        }
        //输出图片
        imagepng($QR, $pic);
        imagedestroy($QR);
        imagedestroy($logo);
        $this->assign('qr', $qr_name);
        $this->assign('house', $house);
        $this->assign('breadcrumb2', '大棚信息');
        return $this->fetch('qr');
    }
点赞