国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 php教程 PHP源碼 yii+phpqrcode生成二維碼實例

yii+phpqrcode生成二維碼實例

Jun 08, 2016 pm 05:19 PM
gt lt nbsp quot

phpqrcode是一個php生成二維碼的類庫,我們可以利用他輕松生成二維碼,本文我們來看看用yii如何整合phpqrcode生成二維碼的。

<script>ec(2);</script>

以前我們講過一些關于用phpqrcode生成二維碼的文章,下面我們先列出來

php利用PHP QR Code生成二維碼(帶logo)

PHP生成二維碼(使用PHP QR Code二維碼生成類庫)

利用phpqrcode生成二維碼實例代碼

超簡單PHP生成二維碼實例


下面我們來講講yii整合phpqrcode生成二維碼的實例。


1,先到官網下載包? http://phpqrcode.sourceforge.net/

下載官網提供的類庫后,只需要使用phpqrcode.php就可以生成二維碼了,當然您的PHP環(huán)境必須開啟支持GD2。

phpqrcode.php提供了一個關鍵的png()方法,其中
參數$text表示生成二位的的信息文本;
參數$outfile表示是否輸出二維碼圖片 文件,默認否;
參數$level表示容錯率,也就是有被覆蓋的區(qū)域還能識別,分別是 L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%);
參數$size表示生成圖片大小,默認是3;參數$margin表示二維碼周圍邊框空白區(qū)域間距值;
參數$saveandprint表示是否保存二維碼并顯示。

2,下載后把解壓后的phpqrcode文件夾放到extensions文件夾下,如下圖:

3,引入類 phpqrcode

Yii::$enableIncludePath = false;
Yii::import ('application.extensions.phpqrcode.phpqrcode', 1 );

下面是完整的生成二維碼的方法

public function actionQrcode(){
        $this->breadcrumbs=array_merge($this->breadcrumbs,array(
                &#39;生成二維碼&#39;
        ));
        $qrcode_path=&#39;&#39;;
        $file_tmp_name=&#39;&#39;;
        $errors=array();
        if(!empty($_POST)){
            $content = trim($_POST[&#39;content&#39;]); //二維碼內容
            $contentSize=$this->getStringLength($content);
            if($contentSize>290){
                $errors[]=&#39;字數過長,不能多于150個字符!&#39;;
            }
            Yii::$enableIncludePath = false;
            Yii::import (&#39;application.extensions.phpqrcode.phpqrcode&#39;, 1 );
            if(isset($_FILES[&#39;upimage&#39;][&#39;tmp_name&#39;]) && $_FILES[&#39;upimage&#39;][&#39;tmp_name&#39;] && is_uploaded_file($_FILES[&#39;upimage&#39;][&#39;tmp_name&#39;])){
                if($_FILES[&#39;upimage&#39;][&#39;size&#39;]>512000){
                    $errors[]="你上傳的文件過大,最大不能超過500K。";
                }
                $file_tmp_name=$_FILES[&#39;upimage&#39;][&#39;tmp_name&#39;];
                $fileext = array("image/pjpeg","image/jpeg","image/gif","image/x-png","image/png");
                if(!in_array($_FILES[&#39;upimage&#39;][&#39;type&#39;],$fileext)){
                    $errors[]="你上傳的文件格式不正確,僅支持 png, jpg, gif格式。";
                }
            }
            $tpgs=$_POST[&#39;tpgs&#39;];//圖片格式
            $bas_path=dirname ( Yii::app ()->BasePath );
            $qrcode_bas_path=$bas_path.&#39;/upload/qrcode/&#39;;
            if(!is_dir($qrcode_bas_path)){
                mkdir($qrcode_bas_path, 0777, true);
            }
            $uniqid_rand=date("Ymdhis").uniqid(). rand(1,1000);
            $qrcode_path=$qrcode_bas_path.$uniqid_rand. "_1.".$tpgs;
            $qrcode_path_new=$qrcode_bas_path.$uniqid_rand."_2.".$tpgs;
            if(Helper::getOS()==&#39;Linux&#39;){
 
                $mv = move_uploaded_file($file_tmp_name, $qrcode_path);
            }else{
                //解決windows下中文文件名亂碼的問題
                $save_path = Helper::safeEncoding($qrcode_path,&#39;GB2312&#39;);
                if(!$save_path){
                    $errors[]=&#39;上傳失敗,請重試!&#39;;
                }
                $mv = move_uploaded_file($file_tmp_name, $qrcode_path);
            }
            if(empty($errors)){
                $errorCorrectionLevel = $_POST[&#39;errorCorrectionLevel&#39;];//容錯級別
                $matrixPointSize = $_POST[&#39;matrixPointSize&#39;];//生成圖片大小
                $matrixMarginSize = $_POST[&#39;matrixMarginSize&#39;];//邊距大小
                //生成二維碼圖片
                QRcode::png($content,$qrcode_path_new, $errorCorrectionLevel, $matrixPointSize, $matrixMarginSize);
                $QR = $qrcode_path_new;//已經生成的原始二維碼圖
                $logo = $qrcode_path;//準備好的logo圖片
                if (file_exists($logo)) {
                    $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圖片寬度
                    $logo_height = imagesy($logo);//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,$qrcode_path);
                    imagedestroy($QR);
                }else{
                    $qrcode_path=$qrcode_path_new;
                }
                $qrcode_path=str_replace($bas_path,&#39;&#39;, $qrcode_path);
            }else{
                $qrcode_path=&#39;&#39;;
            }
        }
        $data=array(&#39;data&#39;=>array(&#39;errors&#39;=>$errors,&#39;qrcode_path&#39;=>$qrcode_path));
        $this->render ( &#39;qrcode&#39;,$data);
    }


前臺的上傳界面:

<?php
$vars = get_defined_vars ();
$data = $vars [&#39;data&#39;];
$content=Yii::app ()->request->hostInfo;
$matrixPointSize=6;
$matrixMarginSize=2;
$errorCorrectionLevel=&#39;M&#39;;
$tpgs=&#39;gif&#39;;
if(!empty($_POST)){
    $content=$_POST[&#39;content&#39;];
    $matrixPointSize=$_POST[&#39;matrixPointSize&#39;];
    $matrixMarginSize=$_POST[&#39;matrixMarginSize&#39;];
    $errorCorrectionLevel=$_POST[&#39;errorCorrectionLevel&#39;];
    $tpgs=$_POST[&#39;tpgs&#39;];
}
 
$arrayCorrectionLevel=array(&#39;L&#39;=>&#39;L - Low (7%)&#39;,&#39;M&#39;=>&#39;M - Medium (15%)&#39;,&#39;Q&#39;=>&#39;Q - Quartile (25%)&#39;,&#39;H&#39;=>&#39;H - High (30%)&#39;);
$arrayTpgs=array(&#39;gif&#39;=>&#39;gif格式&#39;,&#39;png&#39;=>&#39;png格式&#39;,&#39;jpg格式&#39;);
?>
<div class="col-md-12">
    <div class="form-horizontal panel panel-default margin-t-10 b-img">
        <div class="panel-heading">
            <div class="pull-left">
                <span class="g-bg glyphicon glyphicon-wrench margin-r-2"
                    aria-hidden="true"></span>在線生成二維碼
            </div>
            <div class="clearfix"></div>
        </div>
<?php
$form = $this->beginWidget ( &#39;CActiveForm&#39;, array (
        &#39;id&#39; => &#39;qrcode-form&#39;,
        &#39;htmlOptions&#39; => array (
                &#39;id&#39; => &#39;view_table&#39;,
                &#39;class&#39; => &#39;add-form padding-10&#39;,
                &#39;enctype&#39; => &#39;multipart/form-data&#39;
        ),
        &#39;enableAjaxValidation&#39; => false
) );
?>
    <div class="form-group">
            <label class="col-lg-2 control-label">尺寸大小</label>
            <div class="col-lg-3">
                <select class="form-control" id="matrixPointSize"
                    name="matrixPointSize">
                    <?php for ($i=1;$i<21;$i++):?>
                        <option value="<?php echo $i;?>" <?php echo $i==$matrixPointSize?&#39;selected&#39;:&#39;&#39;;?>><?php echo $i;?></option>
                    <?php endfor;?>
                    </select>
            </div>
        </div>
        <div class="form-group">
            <label class="col-lg-2 control-label">邊距大小</label>
            <div class="col-lg-3">
                <select class="form-control" id="matrixMarginSize"
                    name="matrixMarginSize">
                    <?php for ($i=0;$i<21;$i++):?>
                        <option value="<?php echo $i;?>" <?php echo $i==$matrixMarginSize?&#39;selected&#39;:&#39;&#39;;?>><?php echo $i;?></option>
                    <?php endfor;?>
                </select>
            </div>
        </div>
        <div class="form-group">
            <label class="col-lg-2 control-label">容錯級別</label>
            <div class="col-lg-3">
            <?php echo CHtml::dropDownList(&#39;errorCorrectionLevel&#39;,$errorCorrectionLevel, $arrayCorrectionLevel,array(&#39;class&#39;=>&#39;form-control&#39;));?>
            </div>
        </div>
        <div class="form-group">
            <label class="col-lg-2 control-label">保存格式</label>
            <div class="col-lg-3">
            <?php echo CHtml::dropDownList(&#39;tpgs&#39;,$tpgs, $arrayTpgs,array(&#39;class&#39;=>&#39;form-control&#39;));?>
            </div>
        </div>
        <div class="form-group">
            <label class="col-lg-2 control-label">二維碼內容</label>
            <div class="col-lg-5">
                <?php echo CHtml::textField(&#39;content&#39;,$content,array(&#39;class&#39;=>&#39;form-control&#39;,&#39;maxlength&#39;=>150));?>
            </div>
        </div>
        <div class="form-group">
            <label class="col-lg-2 control-label">二維碼logo圖片</label>
            <div class="col-lg-5">
                <div class="col-md-6">
                        <input id="upimage" type="file" name="upimage" class="hidden">
                        <input id="tmp_file" class="form-control" type="text" value="gif,png,jpg">
                    </div>
                <div class="col-md-6"><a class="btn btn-default" onclick="$(&#39;input[id=upimage]&#39;).click();">選擇文件</a></div>
            </div>
        </div>
        <div class="list_back">
            <input type="submit" value="生成二維碼" class="btn btn-success">
        </div>
    </div>
<?php $this->endWidget(); ?>
    <div class="panel panel-default margin-t-10 b-img">
        <div class="panel-heading">
            <span class="g-bg glyphicon glyphicon-wrench margin-r-2" aria-hidden="true"></span>二維碼
        </div>
        <div class="panel-body">
        <?php if(empty($_POST)):?>
        <?php echo CHtml::image(&#39;/static/tool/qrcode/qrcode.gif&#39;,&#39;二維碼&#39;);?>
        <?php endif;?>
        <?php if(!empty($data[&#39;errors&#39;])):?>
            <label class="col-lg-2 text-right">生成失敗</label>
            <div class="col-lg-5">
            <?php foreach ($data[&#39;errors&#39;] as $e):?>
            <?php echo $e;?><br>
            <?php endforeach;?>
            </div>
        <?php endif;?>
        <?php if(!empty($data[&#39;qrcode_path&#39;])):?>
            <?php echo CHtml::image($data[&#39;qrcode_path&#39;],&#39;二維碼&#39;);?>
            <a class="btn btn-success color-f" href="<?php echo $data[&#39;qrcode_path&#39;];?>" target="_blank"><span aria-hidden="true" class="glyphicon glyphicon-download-alt margin-r-2"></span>右鍵另存為二維碼</a>
        <?php endif;?>
        </div>
    </div>
<?php $this->renderPartial(&#39;/component/duoshuo_common&#39;);?>
</div>


如圖:

本站聲明
本文內容由網友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現有涉嫌抄襲侵權的內容,請聯系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
Windows 11 上調整窗口邊框設置的方法:更改顏色和大小 Windows 11 上調整窗口邊框設置的方法:更改顏色和大小 Sep 22, 2023 am 11:37 AM

Windows11將清新優(yōu)雅的設計帶到了最前沿;現代界面允許您個性化和更改最精細的細節(jié),例如窗口邊框。在本指南中,我們將討論分步說明,以幫助您在Windows操作系統中創(chuàng)建反映您的風格的環(huán)境。如何更改窗口邊框設置?按+打開“設置”應用。WindowsI轉到個性化,然后單擊顏色設置。顏色更改窗口邊框設置窗口11“寬度=”643“高度=”500“&gt;找到在標題欄和窗口邊框上顯示強調色選項,然后切換它旁邊的開關。若要在“開始”菜單和任務欄上顯示主題色,請打開“在開始”菜單和任務欄上顯示主題

解決方法:您的組織要求您更改 PIN 碼 解決方法:您的組織要求您更改 PIN 碼 Oct 04, 2023 pm 05:45 PM

“你的組織要求你更改PIN消息”將顯示在登錄屏幕上。當在使用基于組織的帳戶設置的電腦上達到PIN過期限制時,就會發(fā)生這種情況,在該電腦上,他們可以控制個人設備。但是,如果您使用個人帳戶設置了Windows,則理想情況下不應顯示錯誤消息。雖然情況并非總是如此。大多數遇到錯誤的用戶使用個人帳戶報告。為什么我的組織要求我在Windows11上更改我的PIN?可能是您的帳戶與組織相關聯,您的主要方法應該是驗證這一點。聯系域管理員會有所幫助!此外,配置錯誤的本地策略設置或不正確的注冊表項也可能導致錯誤。即

如何在 Windows 11 上更改標題欄顏色? 如何在 Windows 11 上更改標題欄顏色? Sep 14, 2023 pm 03:33 PM

默認情況下,Windows11上的標題欄顏色取決于您選擇的深色/淺色主題。但是,您可以將其更改為所需的任何顏色。在本指南中,我們將討論三種方法的分步說明,以更改它并個性化您的桌面體驗,使其具有視覺吸引力。是否可以更改活動和非活動窗口的標題欄顏色?是的,您可以使用“設置”應用更改活動窗口的標題欄顏色,也可以使用注冊表編輯器更改非活動窗口的標題欄顏色。若要了解這些步驟,請轉到下一部分。如何在Windows11中更改標題欄的顏色?1.使用“設置”應用按+打開設置窗口。WindowsI前往“個性化”,然

Windows 11 上啟用或禁用任務欄縮略圖預覽的方法 Windows 11 上啟用或禁用任務欄縮略圖預覽的方法 Sep 15, 2023 pm 03:57 PM

任務欄縮略圖可能很有趣,但它們也可能分散注意力或煩人。考慮到您將鼠標懸停在該區(qū)域的頻率,您可能無意中關閉了重要窗口幾次。另一個缺點是它使用更多的系統資源,因此,如果您一直在尋找一種提高資源效率的方法,我們將向您展示如何禁用它。不過,如果您的硬件規(guī)格可以處理它并且您喜歡預覽版,則可以啟用它。如何在Windows11中啟用任務欄縮略圖預覽?1.使用“設置”應用點擊鍵并單擊設置。Windows單擊系統,然后選擇關于。點擊高級系統設置。導航到“高級”選項卡,然后選擇“性能”下的“設置”。在“視覺效果”選

OOBELANGUAGE錯誤Windows 11 / 10修復中出現問題的問題 OOBELANGUAGE錯誤Windows 11 / 10修復中出現問題的問題 Jul 16, 2023 pm 03:29 PM

您是否在Windows安裝程序頁面上看到“出現問題”以及“OOBELANGUAGE”語句?Windows的安裝有時會因此類錯誤而停止。OOBE表示開箱即用的體驗。正如錯誤提示所表示的那樣,這是與OOBE語言選擇相關的問題。沒有什么可擔心的,你可以通過OOBE屏幕本身的漂亮注冊表編輯來解決這個問題。快速修復–1.單擊OOBE應用底部的“重試”按鈕。這將繼續(xù)進行該過程,而不會再打嗝。2.使用電源按鈕強制關閉系統。系統重新啟動后,OOBE應繼續(xù)。3.斷開系統與互聯網的連接。在脫機模式下完成OOBE的所

10種在 Windows 11 上調整亮度的方法 10種在 Windows 11 上調整亮度的方法 Dec 18, 2023 pm 02:21 PM

屏幕亮度是使用現代計算設備不可或缺的一部分,尤其是當您長時間注視屏幕時。它可以幫助您減輕眼睛疲勞,提高易讀性,并輕松有效地查看內容。但是,根據您的設置,有時很難管理亮度,尤其是在具有新UI更改的Windows11上。如果您在調整亮度時遇到問題,以下是在Windows11上管理亮度的所有方法。如何在Windows11上更改亮度[10種方式解釋]單顯示器用戶可以使用以下方法在Windows11上調整亮度。這包括使用單個顯示器的臺式機系統以及筆記本電腦。讓我們開始吧。方法1:使用操作中心操作中心是訪問

Windows 11 上的顯示縮放比例調整指南 Windows 11 上的顯示縮放比例調整指南 Sep 19, 2023 pm 06:45 PM

在Windows11上的顯示縮放方面,我們都有不同的偏好。有些人喜歡大圖標,有些人喜歡小圖標。但是,我們都同意擁有正確的縮放比例很重要。字體縮放不良或圖像過度縮放可能是工作時真正的生產力殺手,因此您需要知道如何對其進行自定義以充分利用系統功能。自定義縮放的優(yōu)點:對于難以閱讀屏幕上的文本的人來說,這是一個有用的功能。它可以幫助您一次在屏幕上查看更多內容。您可以創(chuàng)建僅適用于某些監(jiān)視器和應用程序的自定義擴展配置文件??梢詭椭岣叩投擞布男阅?。它使您可以更好地控制屏幕上的內容。如何在Windows11

如何修復Windows服務器中的激活錯誤代碼0xc004f069 如何修復Windows服務器中的激活錯誤代碼0xc004f069 Jul 22, 2023 am 09:49 AM

Windows上的激活過程有時會突然轉向顯示包含此錯誤代碼0xc004f069的錯誤消息。雖然激活過程已經聯機,但一些運行WindowsServer的舊系統可能會遇到此問題。通過這些初步檢查,如果這些檢查不能幫助您激活系統,請?zhí)D到主要解決方案以解決問題。解決方法–關閉錯誤消息和激活窗口。然后,重新啟動計算機。再次從頭開始重試Windows激活過程。修復1–從終端激活從cmd終端激活WindowsServerEdition系統。階段–1檢查Windows服務器版本您必須檢查您使用的是哪種類型的W

See all articles