Heim > PHP-Framework > YII > Spezifische Schritte zum Generieren von QR-Code mit yii2

Spezifische Schritte zum Generieren von QR-Code mit yii2

王林
Freigeben: 2021-03-15 10:22:29
nach vorne
3101 Leute haben es durchsucht

Spezifische Schritte zum Generieren von QR-Code mit yii2

Die spezifischen Schritte zum Generieren von QR-Code sind wie folgt:

1. Laden Sie die Klassenbibliothek von der offiziellen Website herunter.

Stellen Sie nach dem Herunterladen der Klassenbibliothek von der offiziellen Website sicher, dass die aktuelle PHP-Umgebung GD2 unterstützt Dann müssen wir nur noch phpqrcode.php verwenden. Ein QR-Code wurde generiert.

phpqrcode.php stellt eine wichtige png()-Methode bereit, bei der der

  • -Parameter $text die Generierung eines zweistelligen Informationstextes angibt; der

  • -Parameter $outfile gibt an, ob eine QR-Code-Bilddatei ausgegeben werden soll , der Standardwert ist nein ;

  • Der Parameter $level stellt die Fehlertoleranzrate dar, d (QR_ECLEVEL_Q, 25 %), H (QR_ECLEVEL_H, 30 %);

  • Parameter $size gibt die Größe des generierten Bildes an, der Standardwert ist 3; Parameter $margin gibt den Abstandswert des leeren Bereichs an Rahmen um den QR-Code;

  • Parameter $saveandprint gibt an, ob der QR-Code gespeichert und angezeigt werden soll.

2. Platzieren Sie nach dem Herunterladen den dekomprimierten phpqrcode-Ordner wie unten gezeigt:

Spezifische Schritte zum Generieren von QR-Code mit yii2

3. Stellen Sie die Klasse vor

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

Kostenlose Video-Tutorial-Freigabe:

PHP Video-Tutorial

4. Die Upload-Schnittstelle an der Rezeption

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);
    }
Nach dem Login kopieren

Der endgültige Effekt ist wie folgt:


Spezifische Schritte zum Generieren von QR-Code mit yii2Verwandte Empfehlungen:

yii-Framework

Das obige ist der detaillierte Inhalt vonSpezifische Schritte zum Generieren von QR-Code mit yii2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage