Home > PHP Framework > YII > body text

Specific steps to generate QR code using yii2

王林
Release: 2021-03-15 10:22:29
forward
2901 people have browsed it

Specific steps to generate QR code using yii2

The specific steps to generate the QR code are as follows:

1. Download the class library from the official website

After downloading the class library from the official website, make sure The current PHP environment supports GD2, and then we only need to use phpqrcode.php to generate QR codes.

phpqrcode.php provides a key png() method, in which the

  • parameter $text represents the generated two-digit information text;

  • The parameter $outfile indicates whether to output a QR code image file, the default is no;

  • The parameter $level indicates the fault tolerance rate, that is, the covered area can still be recognized , respectively L (QR_ECLEVEL_L, 7%), M (QR_ECLEVEL_M, 15%), Q (QR_ECLEVEL_Q, 25%), H (QR_ECLEVEL_H, 30%);

  • Parameter $size Indicates the size of the generated image, the default is 3; the parameter $margin indicates the spacing value of the blank area of ​​the border around the QR code;

  • The parameter $saveandprint indicates whether to save the QR code and display it.

2. After downloading, place the decompressed phpqrcode folder under the extensions folder, as shown below:

Specific steps to generate QR code using yii2

3. Introduce class

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

4, specific code

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);
    }
Copy after login

Free video tutorial sharing: php video tutorial

4, front-end upload interface

request->hostInfo;
$matrixPointSize=6;
$matrixMarginSize=2;
$errorCorrectionLevel='M';
$tpgs='gif';
if(!empty($_POST)){
    $content=$_POST['content'];
    $matrixPointSize=$_POST['matrixPointSize'];
    $matrixMarginSize=$_POST['matrixMarginSize'];
    $errorCorrectionLevel=$_POST['errorCorrectionLevel'];
    $tpgs=$_POST['tpgs'];
}
$arrayCorrectionLevel=array('L'=>'L - Low (7%)','M'=>'M - Medium (15%)','Q'=>'Q - Quartile (25%)','H'=>'H - High (30%)');
$arrayTpgs=array('gif'=>'gif格式','png'=>'png格式','jpg格式');
?>
在线生成二维码
beginWidget ( 'CActiveForm', array ( 'id' => 'qrcode-form', 'htmlOptions' => array ( 'id' => 'view_table', 'class' => 'add-form padding-10', 'enctype' => 'multipart/form-data' ), 'enableAjaxValidation' => false ) ); ?>
'form-control'));?>
'form-control'));?>
'form-control','maxlength'=>150));?>
endWidget(); ?>
二维码
renderPartial('/component/duoshuo_common');?>
Copy after login

The final effect is as follows:

Specific steps to generate QR code using yii2

Related recommendations: yii framework

The above is the detailed content of Specific steps to generate QR code using yii2. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:cnblogs.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact [email protected]
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!