yii2를 사용하여 QR 코드를 생성하는 특정 단계

王林
풀어 주다: 2021-03-15 10:22:29
앞으로
3051명이 탐색했습니다.

yii2를 사용하여 QR 코드를 생성하는 특정 단계

QR코드를 생성하는 구체적인 단계는 다음과 같습니다.

1. 공식 홈페이지에서 클래스 라이브러리를 다운로드하세요.

공식 홈페이지에서 클래스 라이브러리를 다운로드한 후, 현재 PHP 환경이 GD2를 지원하는지 확인하세요. 그런 다음 phpqrcode.php만 사용하면 됩니다. QR 코드가 생성되었습니다.

phpqrcode.php는

  • 매개변수 $text가 두 자리 정보 텍스트의 생성을 나타내는 주요 png() 메소드를 제공합니다.

  • 매개변수 $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입니다. QR 코드 주변의 테두리

  • 매개변수 $saveandprint는 QR 코드 저장 여부를 나타내며 표시됩니다.

2. 다운로드 후 압축을 푼 phpqrcode 폴더를 아래와 같이 확장 폴더에 넣습니다.

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);
    }
로그인 후 복사

무료 동영상 튜토리얼 공유. 비디오 튜토리얼

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!