1. 程式人生 > >thinkphp 3.2 使用phpqrcode生成二維碼,phpqrcode的使用

thinkphp 3.2 使用phpqrcode生成二維碼,phpqrcode的使用

首先下載phpqrcode,解壓把整個包都放入thinkphp/library/vendor/下

在控制器中新建方法,首先引文phpqrcode檔案

引入後就能直接生成二維碼了,下面是一個例子,生成

    function createcode(){
        Vendor('phpqrcode.phpqrcode');
        $value = "<h1>一生,是多久</h1>";//二維碼資料
        $errorCorrectionLevel = 'H';//糾錯級別:L、M、Q、H
        $matrixPointSize = 10;//二維碼點的大小:1到10,手機端一般是4
        $QR_name = './Public/Qrcode/ping.png';
        \QRcode::png ( $value, $QR_name, $errorCorrectionLevel, $matrixPointSize, 1 );
        //以上是不帶Logo二維碼的檔名,下面是為生成的二維碼新增logo
        $logo = './Public/Logo/ping.png';//需要顯示在二維碼中的Logo影象
        if ($logo !== FALSE) {
            // 從字串中的影象流新建一影象
            $QR = imagecreatefromstring(file_get_contents($QR_name));
            $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, $QR_name );//帶Logo二維碼的檔名
    }
上面是生成的二維碼存在本地的,如果想直接輸出到頁面中怎麼做呢?

這就更簡單了,直接一個函式就行了

下面是個例子

    function createcode(){
        Vendor('phpqrcode.phpqrcode');
        $text = 'http://blog.csdn.net/fei003';// 可以是文字,可以是連結
//        1.第一個引數$text,就是上面程式碼裡的URL網址引數,
//        2.第二個引數$outfile預設為否,不生成檔案,只將二維碼圖片返回,否則需要給出存放生成二維碼圖片的路徑
//        3.第三個引數$level預設為L,這個引數可傳遞的值分別是L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%)。這個引數控制二維碼容錯率,不同的引數表示二維碼可被覆蓋的區域百分比。利用二維維碼的容錯率,我們可以將頭像放置在生成的二維碼圖片任何區域。
//        4.第四個引數$size,控制生成圖片的大小,預設為4
//        5.第五個引數$margin,控制生成二維碼的空白區域大小
//        6.第六個引數$saveandprint,儲存二維碼圖片並顯示出來,$outfile必須傳遞圖片路徑。
        \QRcode::png($text,false,'M',5,1,false);
    }

在html頁面中這樣使用
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>二維碼生成頁面</title>
</head>
<body>
<h1>二維碼生成頁面,下面是生成的二維碼</h1>
<img src="{:U('User/Index/createcode')}" />
</body>
</html>


效果圖如下