zoukankan      html  css  js  c++  java
  • phpqrcode生产二维码

    使用phpqrcode生成二维码

     

    联图网http://www.liantu.com/的接口

    http://qr.liantu.com/api.php?text=
    可以使用<img src="http://qr.liantu.com/api.php?text=x"/>进行引用
    下载图片 http://qr.liantu.com/api.php?text=x 进行引用
    x 必须用UTF8编码格式,x内容出现 & 符号时,请用 %26 代替,换行符使用 %0A

    bg 背景颜色 bg=颜色代码,例如:bg=ffffff
    fg 前景颜色 fg=颜色代码,例如:fg=cc0000
    gc 渐变颜色 gc=颜色代码,例如:gc=cc00000
    el 纠错等级 el可用值:hqml,例如:el=h
    w 尺寸大小 w=数值(像素),例如:w=300
    m 静区(外边距) m=数值(像素),例如:m=30
    pt 定位点颜色(外框) pt=颜色代码,例如:pt=00ff00
    inpt 定位点颜色(内点) inpt=颜色代码,例如:inpt=000000
    logo logo图片 logo=图片地址,例如:logo=http://www.liantu.com/images/2013/sample.jpg

    PHP二维码生成类库,利用它可以轻松生成二维码。

    1.phpqrcode类文件下载,下载地址:https://sourceforge.net/projects/phpqrcode/
    2.PHP环境必须开启支持GD2扩展库支持(可以通过php.ini查看)

    方法解读:
    下载下来的类文件是一个压缩包,里边包含很多文件和演示程序,我们只需要引入里边的phpqrcode.php这一个文件就可以生成二维码了。它是一个多个类的集合文件,我们需要用到里边的QRcode类(第2963行)的png()方法(第3090行):
    [php] view plain copy
     
     
    1. public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false)   
    2. {  
    3.     $enc = QRencode::factory($level, $size, $margin);  
    4.     return $enc->encodePNG($text, $outfile, $saveandprint=false);  
    5. }  
    第1个参数$text:二维码包含的内容,可以是链接、文字、json字符串等等;
    第2个参数$outfile:默认为false,不生成文件,只将二维码图片返回输出;否则需要给出存放生成二维码图片的文件名及路径;
    第3个参数$level:默认为L,这个参数可传递的值分别是L(QR_ECLEVEL_L,7%)、M(QR_ECLEVEL_M,15%)、Q(QR_ECLEVEL_Q,25%)、H(QR_ECLEVEL_H,30%),这个参数控制二维码容错率,不同的参数表示二维码可被覆盖的区域百分比,也就是被覆盖的区域还能识别;
    第4个参数$size:控制生成图片的大小,默认为4;
    第5个参数$margin:控制生成二维码的空白区域大小;
    第6个参数$saveandprint:保存二维码图片并显示出来,$outfile必须传递图片路径;

    注意:前两种方法,每调用一次都会在本地生成一张二维码图片,需要在php同目录下建立qrcode文件夹,内放一张图片名logo.jpg;可在代码中修改。第三种方法,不生成文件,会直接输出二维码到浏览器中。

    使用示例:

    1. 生成二维码(生成图片文件)

    [php] view plain copy
     
     
    1. // 1. 生成原始的二维码(生成图片文件)  
    2. function scerweima($url=''){  
    3.     require_once 'phpqrcode.php';  
    4.       
    5.     $value = $url;                  //二维码内容  
    6.       
    7.     $errorCorrectionLevel = 'L';    //容错级别   
    8.     $matrixPointSize = 5;           //生成图片大小    
    9.       
    10.     //生成二维码图片  
    11.     $filename = 'qrcode/'.microtime().'.png';  
    12.     QRcode::png($value,$filename , $errorCorrectionLevel, $matrixPointSize, 2);    
    13.     
    14.     $QR = $filename;                //已经生成的原始二维码图片文件    
    15.   
    16.   
    17.     $QR = imagecreatefromstring(file_get_contents($QR));    
    18.     
    19.     //输出图片    
    20.     imagepng($QR, 'qrcode.png');    
    21.     imagedestroy($QR);  
    22.     return '<img src="qrcode.png" alt="使用微信扫描支付">';     
    23. }  
    24.   
    25. //调用查看结果  
    26. echo scerweima('https://www.baidu.com');  
     
    2. 在生成的二维码中加上logo(生成图片文件)
    [php] view plain copy
     
     
    1. //2. 在生成的二维码中加上logo(生成图片文件)  
    2. function scerweima1($url=''){  
    3.     require_once 'phpqrcode.php';  
    4.     $value = $url;                  //二维码内容    
    5.     $errorCorrectionLevel = 'H';    //容错级别    
    6.     $matrixPointSize = 6;           //生成图片大小    
    7.     //生成二维码图片  
    8.     $filename = 'qrcode/'.microtime().'.png';  
    9.     QRcode::png($value,$filename , $errorCorrectionLevel, $matrixPointSize, 2);    
    10.       
    11.     $logo = 'qrcode/logo.jpg';  //准备好的logo图片     
    12.     $QR = $filename;            //已经生成的原始二维码图    
    13.   
    14.     if (file_exists($logo)) {     
    15.         $QR = imagecreatefromstring(file_get_contents($QR));        //目标图象连接资源。  
    16.         $logo = imagecreatefromstring(file_get_contents($logo));    //源图象连接资源。  
    17.         $QR_width = imagesx($QR);           //二维码图片宽度     
    18.         $QR_height = imagesy($QR);          //二维码图片高度     
    19.         $logo_width = imagesx($logo);       //logo图片宽度     
    20.         $logo_height = imagesy($logo);      //logo图片高度     
    21.         $logo_qr_width = $QR_width / 4;     //组合之后logo的宽度(占二维码的1/5)  
    22.         $scale = $logo_width/$logo_qr_width;    //logo的宽度缩放比(本身宽度/组合后的宽度)  
    23.         $logo_qr_height = $logo_height/$scale;  //组合之后logo的高度  
    24.         $from_width = ($QR_width - $logo_qr_width) / 2;   //组合之后logo左上角所在坐标点  
    25.           
    26.         //重新组合图片并调整大小  
    27.         /* 
    28.          *  imagecopyresampled() 将一幅图像(源图象)中的一块正方形区域拷贝到另一个图像中 
    29.          */  
    30.         imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,$logo_qr_height, $logo_width, $logo_height);   
    31.     }     
    32.     
    33.     //输出图片    
    34.     imagepng($QR, 'qrcode.png');    
    35.     imagedestroy($QR);  
    36.     imagedestroy($logo);  
    37.     return '<img src="qrcode.png" alt="使用微信扫描支付">';     
    38. }  
    39.   
    40. //调用查看结果  
    41. echo scerweima1('https://www.baidu.com');  

    3. 生成二维码(不生成图片文件)
     
     
    1. //3. 生成原始的二维码(不生成图片文件)  
    2. function scerweima2($url=''){  
    3.     require_once 'phpqrcode.php';  
    4.       
    5.     $value = $url;                  //二维码内容  
    6.     $errorCorrectionLevel = 'L';    //容错级别   
    7.     $matrixPointSize = 5;           //生成图片大小    
    8.     //生成二维码图片  
    9.     $QR = QRcode::png($value,false,$errorCorrectionLevel, $matrixPointSize, 2);  
    10. }  
    <?php
    header('content-type:text/html;charset=utf-8');
    //创建生成二维码函数
    
    function erweima($content=''){
        //引入二维码函数的扩展文件
        include 'phpqrcode.php';
        //二维码内容
        $text=$content;
        //容错等级
        $error_level='L';
        //二维码内容大小
        $erSize=5;
        //存放的名称或路径
        $filename=1 .'.png';
        //生成二维码,并存放到当前目录下名字为1.png或者 $filename='1/' . 1 .'.png';存放到1文件夹下1.png
        QRcode::png($text,$filename,$error_level,$erSize);
    
        //下面的代码可以不用写,感觉多余本来就生成了png的图像没必要在创建一个直接return就行
        //创建一个png图像并获取1.png图像
        $qr=imagecreatefrompng($filename);
        //保存图片
        imagepng($qr,$filename);
        //内存中销毁
        imagedestroy($qr);
        return '<img src='.$filename.'>';
    }
    
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <?php echo  erweima('路圆圆是小狗')?>
    </body>
    </html>
  • 相关阅读:
    27. Remove Element
    26. Remove Duplicates from Sorted Array
    643. Maximum Average Subarray I
    674. Longest Continuous Increasing Subsequence
    1. Two Sum
    217. Contains Duplicate
    448. Find All Numbers Disappeared in an Array
    566. Reshape the Matrix
    628. Maximum Product of Three Numbers
    UVa 1349 Optimal Bus Route Design (最佳完美匹配)
  • 原文地址:https://www.cnblogs.com/xiaowie/p/12448892.html
Copyright © 2011-2022 走看看