ThinkPHP框架整合phpqrcode生成二維碼DEMO


  ThinkPHP框架發展到今天功能已經變得是非常強大了,但是ThinkPHP框架中沒有二維碼相關的庫,因此我們可以通過整合phpqrcode來完成生成二維碼的功能。想使用phpqrcode首先就要把phpqrcode代碼包下載下來,大家可以去官網下載,也可以在網絡上搜索進行下載,這里我為大家提供的有一份 phpqrcode代碼包。下載地址:phpqrcode代碼包

        下面開始講述如何在ThinkPHP框架中整合phpqrcode生成二維碼,這是我已經整合好的樣例,感興趣的可以下載下來進行學習。

        下載:ThinkPHP框架整合phpqrcode生成二維碼DEMO

 

1、將phpqrcode整合到ThinkPHP框架

 

在“ThinkPHP\Library\Vendor\”下新建目錄phpqrcode,將phpqrcode代碼壓縮包內容解壓到該文件夾下。

 

2、調用phpqrcode生成二維碼

 

在控制器下或者在“/Application/Common/Common/function.php”添加如下函數方法(本人是在控制器中寫的):

 

[php]  view plain  copy
 
  1. /** 
  2.      * 調用phpqrcode生成二維碼 
  3.      * @param string $url 二維碼解析的地址 
  4.      * @param int $level 二維碼容錯級別 
  5.      * @param int $size 需要生成的圖片大小 
  6.      */  
  7.     public function qrcode($url = "http://blog.csdn.net/zhihua_w", $level = 3, $size = 4)  
  8.     {  
  9.         Vendor('phpqrcode.phpqrcode');  
  10.         //容錯級別  
  11.         $errorCorrectionLevel = intval($level);  
  12.         //生成圖片大小  
  13.         $matrixPointSize = intval($size);  
  14.         //生成二維碼圖片  
  15.         $object = new \QRcode();  
  16.         //第二個參數false的意思是不生成圖片文件,如果你寫上‘picture.png’則會在根目錄下生成一個png格式的圖片文件  
  17.         $object->png($url, false, $errorCorrectionLevel, $matrixPointSize, 2);  
  18.     }  
      訪問:http://127.0.0.1/thinkphp_phpqrcode/index.php/Home/Index/qrcode 即可看到二維碼

 

 

      到這里已經可以生成二維碼了;如果想對二維碼更加個性化定制的話下面具體說一下png() 函數的使用。

 

[php]  view plain  copy
 
  1. png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false, $back_color = 0xFFFFFF, $fore_color = 0x000000);  

 

① 第一個參數$text:就是上面代碼里的URL網址參數;

② 第二個參數$outfile:默認為否;不生成文件;只將二維碼圖片返回;否則需要給出存放生成二維碼圖片的路徑;

③ 第三個參數$level:默認為L;這個參數可傳遞的值分別是L(QR_ECLEVEL_L,7%)、M(QR_ECLEVEL_M,15%)、Q(QR_ECLEVEL_Q,25%)、H(QR_ECLEVEL_H,30%);這個參數控制二維碼容錯率;不同的參數表示二維碼可被覆蓋的區域百分比。利用二維維碼的容錯率;我們可以將頭像放置在生成的二維碼圖片任何區域;

④ 第四個參數$size:控制生成圖片的大小;默認為4;

⑤ 第五個參數$margin:控制生成二維碼的空白區域大小;

⑥ 第六個參數$saveandprint:保存二維碼圖片並顯示出來;$outfile必須傳遞圖片路徑;

⑦ 第七個參數$back_color:背景顏色;

⑧ 第八個參數$fore_color:繪制二維碼的顏色;

     注:第七、第八個參數需要傳16進制是色值;並且要把“#”替換為“0x”
             例如:
                        白色:#FFFFFF  =>  0xFFFFFF  
                        黑色:#000000  =>  0x000000 

如果想了解更多用法,可以直接參考官方網站源代碼了;http://phpqrcode.sourceforge.net/

3、生成帶logo的二維碼

 

在控制器下或者在“/Application/Common/Common/function.php”添加如下函數方法(本人是在控制器中寫的):

[php]  view plain  copy
 
  1. /** 
  2.      * 生成帶logo的二維碼圖片 
  3.      */  
  4.     public function qrcodeWithPicture()  
  5.     {  
  6.         Vendor('phpqrcode.phpqrcode');  
  7.         $object = new \QRcode();  
  8.         //二維碼內容  
  9.         $url = 'http://blog.csdn.net/zhihua_w';  
  10.         //容錯級別  
  11.         $errorCorrectionLevel = 'L';  
  12.         //生成圖片大小  
  13.         $matrixPointSize = 6;  
  14.         //生成一個二維碼圖片  
  15.         $object->png($url, 'zhihua_w.png', $errorCorrectionLevel, $matrixPointSize, 2);  
  16.   
  17.         //准備好的logo圖片,本人放在了根目錄下  
  18.         $logo = 'logo.png';  
  19.         //已經生成的原始二維碼圖,也在根目錄下  
  20.         $qrcode = 'zhihua_w.png';  
  21.         //logo圖片存在  
  22.         if ($logo !== FALSE) {  
  23.             $qrcode = imagecreatefromstring(file_get_contents($qrcode));  
  24.             $logo = imagecreatefromstring(file_get_contents($logo));  
  25.             $qrcode_width = imagesx($qrcode);   //二維碼圖片寬度  
  26.             $qrcode_height = imagesy($qrcode);  //二維碼圖片高度  
  27.             $logo_width = imagesx($logo);       //logo圖片寬度  
  28.             $logo_height = imagesy($logo);      //logo圖片高度  
  29.             $logo_qr_width = $qrcode_width / 5;  
  30.             $scale = $logo_width / $logo_qr_width;  
  31.             $logo_qr_height = $logo_height / $scale;  
  32.             $from_width = ($qrcode_width - $logo_qr_width) / 2;  
  33.             //重新組合圖片並調整大小  
  34.             imagecopyresampled($qrcode, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,  
  35.                 $logo_qr_height, $logo_width, $logo_height);  
  36.         }  
  37.         //輸出圖片  
  38.         imagepng($qrcode, 'zhihua_w_logo.png');  
  39.         echo '<img src="http://127.0.0.1/thinkphp_phpqrcode/zhihua_w_logo.png">';  
  40.     }  

 

方法思路:先調用phpqrcode生成一張二維碼,再使用php的image相關函數將logo圖片添加到生成的二維碼圖片上。

 

至此,此項目完滿結束!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM