ホームページ PHPフレームワーク YII yii2 を使用して QR コードを生成する具体的な手順

yii2 を使用して QR コードを生成する具体的な手順

Mar 15, 2021 am 10:22 AM
yii2 QRコード

yii2 を使用して QR コードを生成する具体的な手順

QR コードを生成する具体的な手順は次のとおりです:

1. 公式 Web サイトからクラス ライブラリをダウンロードします

クラスをダウンロードした後公式 Web サイトからライブラリを入手し、現在の PHP 環境が GD2 をサポートしていることを確認してください。その後、phpqrcode.php を使用して QR コードを生成するだけです。

phpqrcode.php はキー png() メソッドを提供し、

  • パラメーター $text は生成された 2 桁の情報テキストを表します。

  • パラメータ $outfile は、QR コード画像ファイルを出力するかどうかを示し、デフォルトは no です;
  • パラメータ $level は、フォールト トレランス レートを示します。覆われた領域は引き続き認識できます、それぞれ L (QR_ECLEVEL_L、7%)、M (QR_ECLEVEL_M、15%)、Q (QR_ECLEVEL_Q、25%)、H (QR_ECLEVEL_H、30%);
  • パラメータ $size は、生成される画像のサイズを示します。デフォルトは 3 です。パラメータ $margin は、QR コードの周囲の境界線の空白領域の間隔値を示します。
  • パラメータ $saveandprint は、QR コードを保存して表示するかどうかを示します。
  • 2. ダウンロード後、以下に示すように、解凍した phpqrcode フォルダーを extensions フォルダーの下に配置します:

yii2 を使用して QR コードを生成する具体的な手順3. クラスの導入

Yii::$enableIncludePath = false;
Yii::import ('application.extensions.phpqrcode.phpqrcode', 1 );
ログイン後にコピー

4、特定のコード

public function actionQrcode(){
        $this->breadcrumbs=array_merge($this->breadcrumbs,array(
                '生成二维码'
        ));
        $qrcode_path='';
        $file_tmp_name='';
        $errors=array();
        if(!empty($_POST)){
            $content = trim($_POST['content']); //二维码内容
            $contentSize=$this->getStringLength($content);
            if($contentSize>290){
                $errors[]='字数过长,不能多于150个字符!';
            }
            Yii::$enableIncludePath = false;
            Yii::import ('application.extensions.phpqrcode.phpqrcode', 1 );
            if(isset($_FILES['upimage']['tmp_name']) && $_FILES['upimage']['tmp_name'] && is_uploaded_file($_FILES['upimage']['tmp_name'])){
                if($_FILES['upimage']['size']>512000){
                    $errors[]="你上传的文件过大,最大不能超过500K。";
                }
                $file_tmp_name=$_FILES['upimage']['tmp_name'];
                $fileext = array("image/pjpeg","image/jpeg","image/gif","image/x-png","image/png");
                if(!in_array($_FILES['upimage']['type'],$fileext)){
                    $errors[]="你上传的文件格式不正确,仅支持 png, jpg, gif格式。";
                }
            }
            $tpgs=$_POST['tpgs'];//图片格式
            $bas_path=dirname ( Yii::app ()->BasePath );
            $qrcode_bas_path=$bas_path.'/upload/qrcode/';
            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()=='Linux'){

                $mv = move_uploaded_file($file_tmp_name, $qrcode_path);
            }else{
                //解决windows下中文文件名乱码的问题
                $save_path = Helper::safeEncoding($qrcode_path,'GB2312');
                if(!$save_path){
                    $errors[]='上传失败,请重试!';
                }
                $mv = move_uploaded_file($file_tmp_name, $qrcode_path);
            }
            if(empty($errors)){
                $errorCorrectionLevel = $_POST['errorCorrectionLevel'];//容错级别
                $matrixPointSize = $_POST['matrixPointSize'];//生成图片大小
                $matrixMarginSize = $_POST['matrixMarginSize'];//边距大小
                //生成二维码图片
                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,'', $qrcode_path);
            }else{
                $qrcode_path='';
            }
        }
        $data=array('data'=>array('errors'=>$errors,'qrcode_path'=>$qrcode_path));
        $this->render ( 'qrcode',$data);
    }
ログイン後にコピー

無料のビデオ チュートリアルの共有:

php ビデオ チュートリアル

4、フロントエンド アップロード インターフェイス

<?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>
ログイン後にコピー

最終的な効果は次のとおりです:


yii2 を使用して QR コードを生成する具体的な手順関連する推奨事項:

yii フレームワーク

以上がyii2 を使用して QR コードを生成する具体的な手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

wpsを使ってQRコードを作成する方法 wpsを使ってQRコードを作成する方法 Mar 28, 2024 am 09:41 AM

1. ソフトウェアを開き、wps テキスト操作インターフェイスに入ります。 2. このインターフェースで挿入オプションを見つけます。 3. [挿入] オプションをクリックし、編集ツール領域で [QR コード] オプションを見つけます。 4. [QR コード] オプションをクリックして、[QR コード] ダイアログ ボックスをポップアップ表示します。 5. 左側のテキスト オプションを選択し、テキスト ボックスに情報を入力します。 6. 右側で、QR コードの形状と QR コードの色を設定できます。

PHP を使用して QR コードを動的に生成する方法 PHP を使用して QR コードを動的に生成する方法 Sep 05, 2023 pm 05:45 PM

PHP を使用して QR コードを動的に生成する方法. QR コード (QR コード) は、大量の情報を保存でき、スキャンが簡単で、さまざまな分野で広く使用されています。 Web アプリケーションでは、ユーザーに便利な操作を提供するために QR コードを動的に生成する必要があることがよくあります。この記事では、PHPを使用してQRコードを動的に生成する方法を紹介します。 1. PHPQRCode ライブラリをインストールして設定する QR コードの生成を容易にするために、PHPQRCode ライブラリを使用できます。まず必要なのは、

iPhoneでQRコードをスキャンする方法 iPhoneでQRコードをスキャンする方法 May 04, 2023 am 11:46 AM

前提条件: iPhone で QR コード スキャンを有効にする QR コードをスキャンする機能は、iOS 11 を実行しているすべての iPhone でデフォルトで有効になっています。したがって、QR コードをネイティブにスキャンできるようにするには、iPhone が利用可能な最新バージョン (少なくとも iOS11) に更新されていることを確認する必要があります。以下のいずれかの方法に進む前に、iPhone でこの機能が有効になっていることを確認する必要があります。 iPhone で QR コード スキャンを有効にするには、設定アプリを開いて [カメラ] セクションをタップします。次の画面で、「QR コードのスキャン」トグルを有効にします。これにより機能がオンになり、次のいずれかの方法を使用して QR コードをスキャンして抽出できるようになります。

PHP を使用してバッチ QR コードを生成するにはどうすればよいですか? PHP を使用してバッチ QR コードを生成するにはどうすればよいですか? Aug 25, 2023 pm 04:33 PM

PHP を使用してバッチ QR コードを生成するにはどうすればよいですか?インターネット技術の継続的な発展に伴い、QR コードは非常に一般的な情報伝達ツールになりました。 QR コードは大量の情報を保存でき、素早くスキャンして認識できるため、さまざまな業界で広く使用されています。商品ラベルやイベントチケットなど、多くの場合、大量のQRコードをバッチで生成する必要があります。 PHP は Web 開発で広く使用されているスクリプト言語であり、柔軟性があり、シンプルで使いやすいです。以下では、PHP を使用して生成する方法を紹介します。

Enterprise WeChat の QR コードを読み込めない場合はどうすればよいですか? Enterprise WeChat の QR コードを読み込めない場合はどうすればよいですか? Mar 14, 2024 pm 10:46 PM

Enterprise WeChat の QR コードを読み込めない場合はどうすればよいですか? Enterprise WeChat のコンピューター版にログインするときに、QR コードが読み込めず、表示できない場合はどうすればよいですか? ここでは、Enterprise の QR コードが表示されない問題の解決策を編集者が詳しく紹介します。 WeChat をロードできません。必要な方はぜひお友達、見に来てください!方法 1. ネットワークの理由 1. ネットワーク速度が遅いため、読み込みが遅く表示されない可能性があります。切断して再接続できます。 2. コンピュータ自体のネットワークの問題を調べて、ネットワークに接続されているかどうかを確認し、ネットワーク デバイスを再起動します。方法 2: メンテナンスと更新: Enterprise WeChat のバージョンが低すぎるため、QR コードが生成されない可能性がありますが、ソフトウェアを最新バージョンにアップグレードできます。方法 3、ファイアウォール 1

PHPを使用して時間制限付きのQRコードを生成するにはどうすればよいですか? PHPを使用して時間制限付きのQRコードを生成するにはどうすればよいですか? Aug 26, 2023 pm 04:34 PM

PHPを使用して時間制限付きのQRコードを生成するにはどうすればよいですか?モバイル決済や電子チケットの普及により、QR コードは一般的なテクノロジーになりました。多くのシナリオでは、一定期間が経過しても無効になる期限付きの QR コードを生成する必要がある場合があります。この記事では、PHP を使用して時間制限のある QR コードを生成する方法と、参考となるコード例を紹介します。 PHPQRCode ライブラリのインストール PHP を使用して QR コードを生成するには、まず PHPQRCode ライブラリをインストールする必要があります。この図書館

Vue を使用して QR コードを生成する方法 Vue を使用して QR コードを生成する方法 Nov 07, 2023 am 09:57 AM

QR コードは現代社会で広く使用されている情報暗号化手法であり、フロントエンド フレームワークである Vue を使用して QR コードを生成するにはどうすればよいですか? 1. QR コード生成の原理を理解する QR コード生成の原理は、テキストや URL アドレスを画像に変換し、テキストや URL アドレスの情報をエンコードすることです。サードパーティのライブラリを使用して QR コードを生成できます。この記事では、Qrcode.js ライブラリを使用して QR コードを生成する方法を紹介します。 Qrcode.js は、軽量で依存関係のない QR コード生成ライブラリです。二

yii2でjqueryを削除する方法 yii2でjqueryを削除する方法 Feb 17, 2023 am 09:55 AM

yii2 から jquery を削除する方法: 1. AppAsset.php ファイルを編集し、変数 $depends の「yii\web\YiiAsset」値をコメント アウトします; 2. main.php ファイルを編集し、設定「'yii」を以下に追加しますフィールド「components」\web\JqueryAsset' => ['js' => [],'sourcePath' => null,]," を使用して jquery スクリプトを削除します。

See all articles