xampp環境下thinkphp5二維碼的生成

前言

因爲團隊功能須要,咱們須要用php作一個能根據咱們的給出的URL生成二維碼的action,過程曲折,作出來以後在這裏總結一下。php

開始入手

開始的時候,走了錯誤的方向,當時的想法:既然要生成二維碼,那就要知道二維碼的生成機制,因而我在網上搜二維碼,獲得了以下結果:
image.pnghtml

我粗略讀了一遍以後頓悟:
顯然,這不是我想要的(若是研究這東西,估計將來幾周不用幹別的了)

步入正軌

我雖然走錯了方向,可是也簡單的瞭解了二維碼這個東西,那麼咱們須要的功能該如何實現呢?此次我決定簡單粗暴一點image.png
image.png
谷歌誠不欺我,在我以前已經有人寫好了這些個功能,因而我開始步入正軌。git

總體思路

  • 咱們須要的功能在網上已經有人用php寫好了,就像咱們引用think裏面的庫同樣,咱們只要把網上能生成二維碼的庫下載下來,而後引用它,就能快捷便利的生成二維碼了。思路肯定了,開始幹活。

筆者發現了兩種辦法,最後使用了第二種github

方法一:Composer與endroid/QrCode

  • 提到php下載第三方庫,就必須提到composer了,這是php的一個賊厲害的庫管理工具,能夠幫助咱們下載網上的其餘類庫,關於這個神奇的東西,官方文檔當中也有介紹(以下圖)

image.png

  • 目前筆者用的是windows環境,按照官方文檔當中的連接下載好,開始快樂的一路next,而後問題就來了

image.png

這是我在網上找到的照片(源自菜鳥教程:composer安裝),我安裝的時候,並無地址出現,因而我就懵了,這是什麼意思?web

思考了一下,咱們安裝的這個管理工具是和php聯繫的,而且須要找到菜鳥教程圖片當中的php.exe文件,因而引出了下面的問題:php在哪裏?thinkphp

  • XAMPP

    百度百科:XAMPP(Apache+MySQL+PHP+PERL)是一個功能強大的建站集成軟件包。由此可知,咱們使用的xampp裏面集成了php,下一步,開始找文件image.pngsegmentfault

找到文件,安裝完成,在咱們的thinphp5文件夾下,輸入指令來安裝好第三方庫

    $ composer require endroid/qr-code

這樣,咱們的庫文件就加載完畢,進行代碼開發的話,你們能夠參考這篇博客windows

http://www.cnbreak.org/biancheng/thinkphp5/wechatwebpage/760.html網絡

方法二:利用phpqrcode

筆者用的是這個方法,用起來也相對簡單(不過在thinkphp6貌似沒辦法使用了),咱們在網上直接下載第三方庫composer

下載連接https://sourceforge.net/projects/phpqrcode/files/releases
官方說明文檔 http://phpqrcode.sourceforge.net/docs/html/annotated.html

下載完畢後
image.png
注意:必定要是extends目錄
咱們用composer下載好的庫在vender裏面,而外面下載的第三方庫只有放在extends裏面纔會起做用。
以下是第二種方法的代碼

function qrcode($level = 'L', $size = 4){
    // 導入Phpqrcode插件文件require_once EXTEND_PATH.'phpqrcode/phpqrcode.php';
    
    //設置url
    $url1 = 'https://www.baidu.com/s?wd=666&rsv_spt=1&rsv_iqid=0xfea0cab90000241d&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=ib&rsv_sug3=4&rsv_sug1=3&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=528&rsv_sug4=1203';

    // 容錯級別
    $errorCorrectionLevel = $level;
    // 生成圖片大小
    $matrixPointSize = intval($size);
    // 生成二維碼圖片
    $object = new QRcode();
    // 這個必定要加上,清除緩衝區
    ob_end_clean();
    // 第二個參數false的意思是不生成圖片文件,若是你寫上‘picture.png’則會在根目錄下生成一個png格式的圖片文件
    $object->png($url1, false, $errorCorrectionLevel, $matrixPointSize, 2);
}

相關參數的意思:

png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 4, $margin = 4, $saveandprint=false, $back_color = 0xFFFFFF, $fore_color = 0x000000)

  • $text 就是url參數
  • $outfile 默認否,不生成文件,只返回二維碼圖片,不然須要給出保存路徑
  • $level 二維碼容錯率,默認L(7%)、M(15%)、Q(25%)、H(30%)
  • $size 二維碼圖片大小,默認4
  • $margin 二維碼空白區域大小
  • $saveabdprint 二維碼保存並顯示,$outfile必須傳路徑
  • $back_color 背景顏色
  • $fore_color 繪製二維碼的顏色
  • tip:顏色必須傳16進制的色值,並把「#」替換爲「0x」; 如 #FFFFFF => 0xFFFFFF

總結

咱們想要實現一個功能的時候,通常來講在咱們以前都會有人已經寫出這個東西來了,首先本身去研究這個功能的實現思路,而後去想辦法,找到相關的文檔方法,就能夠實現功能了。

參考博客:

http://www.517php.com/tp/46.html
http://www.cnbreak.org/bianch...

版權聲明

本文保留全部權利,版權歸河北工業大學夢雲智軟件開發團隊全部。未經團隊及做者事先書面贊成,您不得以任何方式將本文內容進行商業性使用或經過信息網絡傳播本文內容。本文做者:溫宇航

相關文章
相關標籤/搜索