• thinkphp3.2二维码扩展


    //简易二维码
    public function qrcode(){
            Vendor('phpqrcode.phpqrcode');
            //生成二维码图片
            $object = new QRcode();
            $url='http://www.shouce.ren/';//网址或者是文本内容
            $level=3;
            $size=4;
            $errorCorrectionLevel =intval($level) ;//容错级别
            $matrixPointSize = intval($size);//生成图片大小
            $object->png($url, false, $errorCorrectionLevel, $matrixPointSize, 2);
        }
    
    <?php
    //高级使用带logo
    public function qrcode(){
            Vendor('phpqrcode.phpqrcode');
            //生成二维码图片
            $object = new QRcode();
            $qrcode_path='';
            $file_tmp_name='';
            $errors=array();
            if(!empty($_POST)){
                $content = trim($_POST['content']); //二维码内容
                $contentSize=$this->getStringLength($content);
                if($contentSize>150){
                    $errors[]='字数过长,不能多于150个字符!';
                }
                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'];//图片格式
                $qrcode_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'];//边距大小
                    //生成二维码图片
                    $object::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;
                    }
                }else{
                    $qrcode_path='';
                }
            }
            $data=array('data'=>array('errors'=>$errors,'qrcode_path'=>$qrcode_path));
            $this->assign('data',$data);
            $this->display();


    首先把扩展文件放进

    https://files.cnblogs.com/files/zonglonglong/phpqrcode.rar

    注意:如果在服务器上显示为空或异常,可以尝试使用ob_clean()或者ob_end_clean()

    具体原因我也懒得查

  • 相关阅读:
    TypeScript完全解读(26课时)_7.ES6精讲
    Flutter实战视频-移动电商-66.会员中心_编写ListTile通用方法
    Residual Networks &lt;2015 ICCV, ImageNet 图像分类Top1&gt;
    Coursera《machine learning》--(14)数据降维
    C# webbrowser遍历网页元素
    查询某表空间被哪些用户所使用
    C 语言运算符优先级(记忆口诀)
    建立简单的哈希表
    【LeetCode-面试算法经典-Java实现】【168-Excel Sheet Column Title(Excell列标题)】
    计算随意无序字符串中的最大有序串
  • 原文地址:https://www.cnblogs.com/zonglonglong/p/8514031.html
Copyright © 2020-2023  润新知