<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 開發準備 首先打開`Xfce終端`,啟動服務 啟動 php7.2-fpm: ~~~ $ sudo service php7.2-fpm start ~~~ 配置 nginx: ~~~ $ sudo vim /etc/nginx/sites-available/default ~~~ 修改相應的配置: ~~~ server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; #root /usr/share/nginx/html; #root /var/www/laravel/public; root /home/shiyanlou/Code; . . . ~~~ 然后重啟 nginx: ~~~ $ sudo service nginx reload ~~~ 進入`/home/shiyanlou/Code`目錄 ~~~ $ cd /home/shiyanlou/Code ~~~ 為了開發的便利,修改`Code`目錄的權限 ~~~ $ sudo chmod -R 777 /home/shiyanlou/Code ~~~ 在目錄`/home/shiyanlou/Code`下,下載`phpqrcode.zip`和`logo.jpg`。 * 下載`phpqrcode` ~~~ $ wget http://labfile.oss.aliyuncs.com/courses/991/phpqrcode.zip ~~~ * 下載 logo ~~~ $ wget http://labfile.oss.aliyuncs.com/courses/991/logo.jpg ~~~ * 解壓`phpqrcode.zip` ~~~ $ unzip phpqrcode.zip ~~~ ## 三、實驗步驟 解壓后得到`phpqrcode`文件夾,文件包含`phpqrcode.php`,我們需要使用`phpqrcode.php`里面的`QrCode`類的`png`方法。 通過編輯器`brackets`打開文件夾`/home/shiyanlou/Code`然后查看在`phpqrcode`文件夾下的`phpqrcode.php`文件的 3091 行(跳轉指定行快捷鍵:ctrl + G,然后輸入 3091 后回車) ~~~ public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false) { $enc = QRencode::factory($level, $size, $margin); return $enc->encodePNG($text, $outfile, $saveandprint=false); } ~~~ 函數參數的詳細說明: | 參數 | 含義 | | --- | --- | | text | 二維碼的url | | outfile | 不生成圖片文件,默認為false | | level | 控制二維碼容錯率,默認為L,范圍:L、M、Q、H | | size | 生成圖片的大小,默認為4,范圍:1-10 | | margin | 生成二維碼的空白區域大小 | | saveandprint | 保存二維碼圖片并顯示出來,$outfile必須傳遞圖片路徑 | 1. 使用`brackets`,在`Code`下,創建新文件`qrcode1.php`(實現生成原始的二維碼) `編輯`文件`/home/shiyanlou/Code/qrcode1.php`下 ~~~ <?php include "./phpqrcode/phpqrcode.php"; $url="http://www.shiyanlou.com"; $path = false; $level = "L"; $size = 10; $margin = 2; $qrcode = new Qrcode(); $qrcode->png($url, $path, $level, $size, $margin); ?> ~~~ 通過在線環境的`火狐瀏覽器`,輸入`localhost/qrcode1.php`![此處輸入圖片的描述](https://doc.shiyanlou.com/document-uid572534labid4088timestamp1511947131040.png) 此時可以打開你的手機,掃描這個二維碼,進入[實驗樓首頁](https://www.shiyanlou.com/)。 2. 接下來添加新功能:保存圖片文件并輸出圖片 使用`brackets`,在`Code`下,創建新文件`qrcode2.php``編輯`文件`/home/shiyanlou/Code/qrcode2.php` ~~~ <?php include "./phpqrcode/phpqrcode.php"; $url="http://www.shiyanlou.com"; $path = 'shiyanlou.png'; $level = "L"; $size = 10; $margin = 2; $qrcode = new Qrcode(); $qrcode->png($url, $path, $level, $size, $margin); //保存二維碼,并輸出顯示 $QR = imagecreatefromstring(file_get_contents($path)); imagepng($QR, 'shiyanlou.png'); imagedestroy($QR); echo '<img src="shiyanlou.png" alt="請掃碼">'; ?> ~~~ 通過在線環境的`火狐瀏覽器`,輸入`localhost/qrcode2.php`![此處輸入圖片的描述](https://doc.shiyanlou.com/document-uid572534labid4088timestamp1511948507813.png) 可以查看生成了圖片`shiyanlou.png`![此處輸入圖片的描述](https://doc.shiyanlou.com/document-uid18510labid4088timestamp1514517999788.png) 3. 最后實現在二維碼上添加 logo 先把前面生成的`shiyanlou.png`刪除 ~~~ $ rm shiyanlou.png ~~~ 使用`brackets`,在`Code`下,創建新文件`qrcode3.php``編輯`文件`/home/shiyanlou/Code/qrcode3.php` ~~~ <?php include "./phpqrcode/phpqrcode.php"; $url="http://www.shiyanlou.com"; $path = 'shiyanlou.png'; $level = "L"; $size = 10; $margin = 2; $qrcode = new Qrcode(); $qrcode->png($url, $path, $level, $size, $margin); $logo = 'logo.jpg'; // 中間的logo圖片 $QR = $path; if(file_exists(@$logo) && $path !== false){ // 從字符串中的圖像流新建圖像 $QR = imagecreatefromstring(file_get_contents($QR)); $logo = imagecreatefromstring(file_get_contents($logo)); // 獲取 QR 的寬高 $QR_width = imagesx($QR); $QR_height = imagesy($QR); // 獲取 logo 的寬高 $logo_width = imagesx($logo); $logo_height = imagesy($logo); //獲取二維碼上的 logo 寬 $logo_qr_width = $QR_width / 5; // 獲取縮小比例 $scale = $logo_width / $logo_qr_width; //獲取等比例二維碼上的 logo 高 $logo_qr_height = $logo_height / $scale; // 獲取 logo 在二維碼上的開始的坐標點 $start_xy = ($QR_width - $logo_qr_width) / 2; // 把 logo 拷貝到 QR 上 imagecopyresampled($QR, $logo, $start_xy, $start_xy, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); $last = 'logo_'.$path; //保存帶 logo 的二維碼 imagepng($QR, $last); imagedestroy($QR); imagedestroy($logo); } //如果存在logo就顯示帶logo的二維碼,否則就顯示原始二維碼 if(file_exists(@$last)){ echo "<img src='$last' alt='請掃碼'>"; }else{ echo "<img src='$path' alt='請掃碼'>"; } ~~~ 關于bool imagecopyresampled 的說明:`bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )` | 參數 | 含義 | | --- | --- | | dst\_image | 新建的圖片 | | src\_image | 需要載入的圖片 | | dst\_x | 設定需要載入的圖片在新圖中的x坐標 | | dst\_y | 設定需要載入的圖片在新圖中的y坐標,x,y同為 0 則從左上角開始 | | src\_x | 設定載入圖片要載入的區域x坐標 | | src\_y | 設定載入圖片要載入的區域y坐標,x,y同為 0 則從左上角開始 | | dst\_w | 設定載入的原圖的寬度(在此設置縮放) | | dst\_h | 設定載入的原圖的高度(在此設置縮放) | | src\_w | 原圖要載入的寬度 | | src\_h | 原圖要載入的高度 | 通過在線環境的`火狐瀏覽器`,輸入`localhost/qrcode3.php` ![此處輸入圖片的描述](https://doc.shiyanlou.com/document-uid18510labid4088timestamp1514518249996.png) 生成了原二維碼`shiyanlou.png`和帶有 logo 的二維碼`logo_shiyanlou.png`![此處輸入圖片的描述](https://doc.shiyanlou.com/document-uid18510labid4088timestamp1514518183363.png) ## 四、實驗總結 二維碼的生成,到此就結束了。二維碼在實際使用中的場景很多,大家可以在掌握了二維碼的生成后,根據自己的能力進行一些擴展訓練。將它使用在一些具體的項目中。 ## 五、課后擴展 如何在框架中用`phpqrcode`生成二維碼。 這里我給出 laravel 5.5 LTS 版本的代碼。有興趣的同學可以在環境中試一試。`laravel 5.5`的開發環境已經配置好了,在目錄`/home/shiyanlou/Code/myweb`下。 配置 nginx ~~~ $ sudo vim /etc/nginx/sites-available/default ~~~ 修改相應配置 ~~~ server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; #root /usr/share/nginx/html; #root /var/www/laravel/public; root /home/shiyanlou/Code/myweb/public; . . . ~~~ 然后重啟 nginx ~~~ $ sudo service nginx reload ~~~ 進入`myweb`目錄 ~~~ $ cd myweb ~~~ 執行 composer 下載`aferrandini/phpqrcode` 由于國內網絡原因,有時候 Composer 安裝會花費很多時間,甚至出錯。 這里推薦使用 Packagist / Composer 中國全量鏡像 來加速 Composer 的操作。 我們只需要修改 Composer 的全局配置文件即可: ~~~ composer config -g repo.packagist composer https://packagist.phpcomposer.com ~~~ > 此步需要鏈接外網,非會員用戶請在本地就行擴展練習。 ~~~ $ composer require aferrandini/phpqrcode ~~~ ![此處輸入圖片的描述](https://doc.shiyanlou.com/document-uid572534labid4088timestamp1513840846272.png) 再執行命令生成控制器`QrcodeController` ~~~ $ php artisan make:controller QrcodeController ~~~ 先進入目錄`public` ~~~ $ cd public ~~~ 下載 ~~~ $ wget http://labfile.oss.aliyuncs.com/courses/991/logo.jpg ~~~ `編輯`文件`app/Http/Controllers/QrcodeController.php` ~~~ <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Controllers\Controller; use PHPQRCode\QRcode; class QrcodeController extends Controller { public function show() { return view('qrcode'); } public function create() { $url="http://www.shiyanlou.com"; $path = 'shiyanlou.png'; $level = "L"; $size = 10; $margin = 2; $qrcode = new QRcode(); $qrcode->png($url, $path, $level, $size, $margin); $logo = 'logo.jpg'; // 中間的logo圖片 $QR = $path; if(file_exists(@$logo) && $path !== false){ $QR = imagecreatefromstring(file_get_contents($QR)); $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); header('Content-type:image/png'); imagepng($QR); imagedestroy($QR); imagedestroy($logo); } } } ~~~ 再`編輯`文件`routes/web.php`(添加新的路由) ~~~ <?php /* |-------------------------------------------------------------------------- | Application Routes |-------------------------------------------------------------------------- | | Here is where you can register all of the routes for an application. | It's a breeze. Simply tell Laravel the URIs it should respond to | and give it the controller to call when that URI is requested. | */ Route::get('/', function () { return view('welcome'); }); Route::get('qrcode', 'QrcodeController@show'); Route::get('qrcode/create', 'QrcodeController@create'); ~~~ 創建文件并編輯`resources/views/qrcode.blade.php` ~~~ <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>二維碼展示</title> </head> <body> <h1>二維碼展示:</h1> <img src="{{url('qrcode/create')}}" alt="請掃碼"> </body> </html> ~~~ 最后在瀏覽器輸入地址`localhost/qrcode`![此處輸入圖片的描述](https://doc.shiyanlou.com/document-uid572534labid4088timestamp1513842033269.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看