thinkphp下使用qrcode类制作二维码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp下使用qrcode类制作二维码相关的知识,希望对你有一定的参考价值。

<?php
    require_once \'./phpqrcode/phpqrcode.php\';
    /*
    * 地址:http://phpqrcode.sourceforge.net/   下载qrcode类
    * @param string $url      要生成的链接
    * @param bool   $local   是否生成本地文件 
    * @param string $logo   中间图片地址 
    */ 

    echo qrcode(\'https://www.cnblogs.com/mengor/p/8192642.html\',$local=true,$logo="./_img/20170713165304.png");
    function qrcode($url,$local,$logo){
       $value = $url; //二维码内容 链接
       $errorCorrectionLevel = \'M\';//容错级别 
       $matrixPointSize = 8;//生成图片大小 
       if(!$local){
            QRcode::png($value,false, $errorCorrectionLevel, $matrixPointSize, 2); 
       }else{
            $abs_url = \'./_img/\';  //保存的二维码路径
            $qr_dir= $abs_url.microtime().\'.png\'; //保存的二维码名字 
            //生成二维码图片 
            QRcode::png($value,  $qr_dir, $errorCorrectionLevel, $matrixPointSize, 2); 
            $QR =  $qr_dir;//已经生成的原始二维码图 
  
            if ($logo !== FALSE) {
                $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);
                //输出图片 
                $he_dir= $abs_url.microtime().\'.png\';//重组图片路径
                imagepng($QR, $he_dir);
                return \'<img src="\'.$he_dir.\'" alt="">\';      
            }else{
                return \'<img src="\'.$qr_dir.\'" alt="">\';      
            }
       }
   }

 由于二维码允许有一定的容错性,一般的二维码即使在遮住部分但仍然能够解码,经常我们扫描二维码的时候扫描到甚至不到一半时就能解码扫描结果,这是因为生成器会将部分信息重复表示来提高其容错度,这就是为什么我们在二维码中间加个LOGO图片并不影响解码结果的原因。

 

require_once \'./phpqrcode/qrlib.php\';
/*  * @param  要生成的链接       
    * @param  是否生成本地文件 
    * @param  容错级别 
    * @param  大小 
    * @param  外边距 
    * @param  是否在本地保存的同时打印到页面    修改 code中png源码
    */
QRcode::png(\'abc\',false,QR_ECLEVEL_L,10,2,true);

 

 


以上是关于thinkphp下使用qrcode类制作二维码的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp5 生成二维码在模板中显示

thinkphp3.2 qrcode 怎么在view页面上输出

thinkphp 3.2 生成二维码 在本地测试没问题 放到服务器上就报错了

thinkphp5 与 endroid 二维码生成

THINKPHP 整合phpqrcode 生成二维码 没logo

二维码编码与解码类库ThoughtWorks.QRCode