php生成二维码_php生成二维码不生成文件 - CSDN
  • php生成二维码完整demo

    2020-07-31 01:47:38
    php类库生成二维码,完整demo,下载运行即可用
  • php生成二维码图片

    千次阅读 2018-07-27 14:05:57
    最近做项目要生成二维码让用户做跳转,搜索了一下发现网上都是用一个叫做 phpqrcode 的扩展,在 github 上搜索了一下发现这个项目作者在6年前就已经没有维护了,百度的文章也是千篇一律的你复制我的我复制你的,...

     

    1.为什么要写这篇文章

    最近做项目要生成二维码让用户做跳转,搜索了一下发现网上都是用一个叫做 phpqrcode 的扩展,在 github 上搜索了一下发现这个项目作者在6年前就已经没有维护了,百度的文章也是千篇一律的你复制我的我复制你的,所以只好在 github 上看看有没有更好的关于 PHP 生成二维码的扩展,之后找到了一个项目名称为 qr-code 的扩展,感觉不错,作者也一直在做维护,使用也是简单方便。所以在这里把这个扩展的安装使用说明一下,方便各位的开发。

    qr-code 项目的github 地址为:qr-code

    2.安装 qr-code

    这里我们通过composer 来安装扩展,composer 也算是现在比较火的包管理工具了,如果对composer 不太了解的话,可以看下我以前的文章:

    《php-composer的安装与使用方法》

    我的环境为 linux,我们键入以下命令来进行该扩展的安装:

    composer require endroid/qr-code
    

    当扩展安装完毕后,我们就可以开始下面的操作了。

    3.生成二维码

    首先我们需要在项目中引入qr-code 类文件,composer 现在基本上是通过psr-4 "命名空间": "路径" 的方式进行自动加载,它的位置位于扩展根目录的 composer.json 文件中。

    好了,现在我们引入qr-code 类文件,并尝试输出一个简单的二维码。

    use Endroid\QrCode\QrCode;
    
    // $content 一般为url地址 当然也可以是文字内容
    $content = 'http://www.baidu.com?rand=' . rand(1000, 9999);
    $qrCode = new QrCode($content);
    // 指定内容类型
    header('Content-Type: '.$qrCode->getContentType());
    // 输出二维码
    echo $qrCode->writeString();
    

    好了,当指定了内容类型后,会直接在页面输出二维码

    那这种直接输出的二维码怎么应用于项目中呢,一般都是直接写在html 中的 <img> 标签中,例如:

    <img src="http://localhost:8080/projecttest/qrtest?id=1234"  alt="这是一个二维码" />
    

    这样,就可以把二维码显示在页面的任意位置了。当然,我们也可以把它存入文件中,生成一个任意格式的图片,比如说:

    $qrCode->writeFile(__DIR__ . '/qrcode.png');
    

    这样我们就可以根据图片路径在页面上展示二维码了

    4.简单的示例文件以及常用参数介绍

    这里,我贴出一个简单的类处理文件,并介绍一下qr-code 常用的一些参数。

    类文件:

    namespace '命名空间';
    
    use Endroid\QrCode\ErrorCorrectionLevel;
    use Endroid\QrCode\LabelAlignment;
    use Endroid\QrCode\QrCode;
    
    class QrcodeComponent
    {
        protected $_qr;
        protected $_encoding = 'UTF-8';
        protected $_size = 300;
        protected $_logo = false;
        protected $_logo_url = '';
        protected $_logo_size = 80;
        protected $_title = false;
        protected $_title_content = '';
        protected $_generate = 'display'; // display-直接显示 writefile-写入文件
        const MARGIN = 10;
        const WRITE_NAME = 'png';
        const FOREGROUND_COLOR = ['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0];
        const BACKGROUND_COLOR = ['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0];
    
        public function __construct($config) {
            isset($config['generate']) && $this->_generate = $config['generate'];
            isset($config['encoding']) && $this->_encoding = $config['encoding'];
            isset($config['size']) && $this->_size = $config['size'];
            isset($config['display']) && $this->_size = $config['size'];
            isset($config['logo']) && $this->_logo = $config['logo'];
            isset($config['logo_url']) && $this->_logo_url = $config['logo_url'];
            isset($config['logo_size']) && $this->_logo_size = $config['logo_size'];
            isset($config['title']) && $this->_title = $config['title'];
            isset($config['title_content']) && $this->_title_content = $config['title_content'];
        }
    
        /**
         * 生成二维码
         * @param $content 需要写入的内容
         * @return array | page input
         */
        public function create($content) {
            $this->_qr = new QrCode($content);
            $this->_qr->setSize($this->_size);
            $this->_qr->setWriterByName(self::WRITE_NAME);
            $this->_qr->setMargin(self::MARGIN);
            $this->_qr->setEncoding($this->_encoding);
            $this->_qr->setErrorCorrectionLevel(ErrorCorrectionLevel::HIGH);
            $this->_qr->setForegroundColor(self::FOREGROUND_COLOR);
            $this->_qr->setBackgroundColor(self::BACKGROUND_COLOR);
            if ($this->_title) {
                $this->_qr->setLabel($this->_title_content, 16, '字体地址', LabelAlignment::CENTER);
            }
            if ($this->_logo) {
                $this->_qr->setLogoPath($this->_logo_url);
                $this->_qr->setLogoWidth($this->_logo_size);
                $this->_qr->setRoundBlockSize(true);
            }
            $this->_qr->setValidateResult(false);
    
            if ($this->_generate == 'display') {
                // 前端调用 例:<img src="http://localhost/qr.php?url=base64_url_string">
                header('Content-Type: ' . $this->_qr->getContentType());
                return $this->_qr->writeString();
            } else if ($this->_generate == 'writefile') {
                return $this->_qr->writeString();
            } else {
                return ['success' => false, 'message' => 'the generate type not found', 'data' => ''];
            }
        }
    
        /**
         * 生成文件
         * @param $file_name 目录文件 例: /tmp
         * @return array
         */
        public function generateImg($file_name) {
            $file_path = $file_name . DS . uniqid() . '.' . self::WRITE_NAME;
    
            if (!file_exists($file_name)) {
                mkdir($file_name, 0777, true);
            }
    
            try {
                $this->_qr->writeFile($file_path);
                $data = [
                    'url' => $file_path,
                    'ext' => self::WRITE_NAME,
                ];
                return ['success' => true, 'message' => 'write qrimg success', 'data' => $data];
            } catch (Exception $e) {
                return ['success' => false, 'message' => $e->getMessage(), 'data' => ''];
            }
        }
    }
    

    使用方法:

    use '命名空间';
    
    $qr_url = 'http://www.baidu.com?id=' . rand(1000, 9999);
    $file_name = '/tmp';
    
    // 直接输出
    $qr_code = new QrcodeComponent();
    $qr_img = qr_code->create($qr_url);
    echo $qr_img;
    
    // 生成文件
    $config = [
        'generate' => 'writefile',
    ];
    $qr_code = new QrcodeComponent($config);
    $qr_img = $qr_code->create($qr_url);
    $rs = $qr_code->generateImg($file_name);
    print_r($rs);
    

    常用参数解释:

    setSize - 二维码大小 px
    setWriterByName - 写入文件的后缀名
    setMargin - 二维码内容相对于整张图片的外边距
    setEncoding - 编码类型
    setErrorCorrectionLevel - 容错等级,分为L、M、Q、H四级
    setForegroundColor - 前景色
    setBackgroundColor - 背景色
    setLabel - 二维码标签
    setLogoPath - 二维码logo路径
    setLogoWidth - 二维码logo大小 px

    转自:https://juejin.im/entry/5a7bc1976fb9a0634a390122

    展开全文
  • 转载:https://www.jianshu.com/p/dfefe14d9f2f最简单最实例的goolge开源方法,不过反应有点慢1.google开放api代码如下:$urlToEncode="...; generateQRfromGoogle($... * google api 二维码生成【QRcode可...

    转载:https://www.jianshu.com/p/dfefe14d9f2f


    最简单最实例的goolge开源方法,不过反应有点慢

    1.google开放api

    代码如下:

    $urlToEncode="http://www.helloweba.com";   
    generateQRfromGoogle($urlToEncode);   
    /**  
     * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】  
     * @param string $chl 二维码包含的信息,可以是数字、字符、二进制信息、汉字。  
     不能混合数据类型,数据必须经过UTF-8 URL-encoded  
     * @param int $widhtHeight 生成二维码的尺寸设置  
     * @param string $EC_level 可选纠错级别,QR码支持四个等级纠错,用来恢复丢失的、读错的、模糊的、数据。  
     *                            L-默认:可以识别已损失的7%的数据  
     *                            M-可以识别已损失15%的数据  
     *                            Q-可以识别已损失25%的数据  
     *                            H-可以识别已损失30%的数据  
     * @param int $margin 生成的二维码离图片边框的距离  
     */   
    function generateQRfromGoogle($chl,$widhtHeight ='150',$EC_level='L',$margin='0')   
    {   
        $chl = urlencode($chl);   
        echo '<img src="http://chart.apis.google.com/chart?chs='.$widhtHeight.'x'.$widhtHeight.'   
        &cht=qr&chld='.$EC_level.'|'.$margin.'&chl='.$chl.'" alt="QR code" widhtHeight="'.$widhtHeight.'   
        " widhtHeight="'.$widhtHeight.'"/>';   
    }
    

    2.php类库PHP QRCode
    地址:http://phpqrcode.sourceforge.net/
    下载:http://sourceforge.net/projects/phpqrcode/
    下载官网提供的类库后,只需要使用phpqrcode.php就可以生成二维码了,当然您的PHP环境必须开启支持GD2phpqrcode.php提供了一个关键的png()方法,其中参数$frame表示生成的信息文本;参数$filename 表示是否输出二维码图片文件(文件路径,包含图片名和后缀),默认否;参数$pixelPerPoint 表示容错率,也就是有被覆盖的区域还能识别参数,$outerFrame表示生成图片大小,默认是4;参数$saveandprint表示是否保存二维码。

    代码如下:

    public static function png($frame, $filename = false, $pixelPerPoint = 4, $outerFrame = 4,$saveandprint=FALSE) 
            {
                $image = self::image($frame, $pixelPerPoint, $outerFrame);
                
                if ($filename === false) {
                    Header("Content-type: image/png");
                    ImagePng($image);
                } else {
                    if($saveandprint===TRUE){
                        ImagePng($image, $filename);
                        header("Content-type: image/png");
                        ImagePng($image);
                    }else{
                        ImagePng($image, $filename);
                    }
                }
                
                ImageDestroy($image);
            }
    

    调用PHP QR Code:

    <?php
    include 'phpqrcode.php';   //只需要phpqrcode一个文件即可,下载的里面其他的没什么用
    QRcode::png('http://www.baidu.com'); 
    

    实际应用中,我们会在二维码的中间加上自己的LOGO,已增强宣传效果。那如何生成含有logo的二维码呢?其实原理很简单,先使用PHP QRCode生成一张二维码图片,然后再利用php的image相关函数,将事先准备好的logo图片加入到刚生成的原始二维码图片中间,然后重新生成一张新的二维码图片。

    <?php
    include './phpqrcode.php';
    QRcode::png('http://www.baidu.com','qrcode.png',2,10,true);
    $logo = 'logo.jpg';//准备好的logo图片
    $QR = 'qrcode.png';//已经生成的原始二维码图
    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);
    }
    //输出图片
    imagepng($QR, 'newcode.png');
    echo '![](./newcode.png)';
    

    对于第二种方法:如果不使用$filename,第二个参数为false的时候,就不会把二维码图片保存,而是直接输出。
    现在还有一些如有:libqrencode与QRcode Perl CGI & PHP scripts二维码生成插件大家喜欢也可看看。

    3.基于jquery的二维码生成插件qrcode,在页面中调用该插件就能生成对应的二维码。
    qrcode其实是通过使用jQuery实现图形渲染,画图,支持canvas(HTML5)和table两种方式,
    可以到https://github.com/jeromeetienne/jquery-qrcode获取最新的代码。

    如何使用

    (1)、首先在页面中加入jquery库文件和qrcode插件。

    <script type="text/javascript" src="jquery.js"></script> 
    <script type="text/javascript" src="jquery.qrcode.min.js"></script> 
    

    (2)、在页面中需要显示二维码的地方加入以下代码:

    <div id="code"></div> 
    

    (3)、调用qrcode插件。
    qrcode支持canvas和table两种方式进行图片渲染,默认使用canvas方式,效率最高,当然要浏览器支持html5。直接调用如下:

    $('#code').qrcode("http://www.helloweba.com"); //任意字符串 
    

    您也可以通过以下方式调用:

    $("#code").qrcode({ 
        render: "table", //table方式 
        width: 200, //宽度 
        height:200, //高度 
        text: "www.helloweba.com" //任意内容 
    }); 
    

    这样就可以在页面中直接生成一个二维码,你可以用手机“扫一扫”功能读取二维码信息。

    识别中文

    我们试验的时候发现不能识别中文内容的二维码,通过查找多方资料了解到,jquery-qrcode是采用charCodeAt()方式进行编码转换的。而这个方法默认会获取它的Unicode编码,如果有中文内容,在生成二维码前就要把字符串转换成UTF-8,然后再生成二维码。您可以通过以下函数来转换中文字符串:

    function toUtf8(str) {    
        var out, i, len, c;    
        out = "";    
        len = str.length;    
        for(i = 0; i < len; i++) {    
            c = str.charCodeAt(i);    
            if ((c >= 0x0001) && (c <= 0x007F)) {    
                out += str.charAt(i);    
            } else if (c > 0x07FF) {    
                out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));    
                out += String.fromCharCode(0x80 | ((c >>  6) & 0x3F));    
                out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));    
            } else {    
                out += String.fromCharCode(0xC0 | ((c >>  6) & 0x1F));    
                out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));    
            }    
        }    
        return out;    
    } 
    

    以下示例:

    var str = toUtf8("随便来点啥"); 
    $('#code').qrcode(str); 
    转载:https://www.jianshu.com/p/dfefe14d9f2f
    展开全文
  • 使用 phpqrcode 生成二维码 phpqrcode是国外的一款用来生成二维码的类库,方便用来生成二维码,方便手机用户访问。
  • php小程序生成二维码

    2019-06-21 22:46:21
    1 <?php 2 3 getwxacode(); 4 ... 5 //生成二维码 6 function getwxacode(){ 7 $url = "https://api.weixin.qq.com/wxa/getwxacode?"; 8 $url .= "access_token=" . getToken(...
     1 <?php
     2 
     3 getwxacode();
     4 
     5     //生成二维码
     6     function getwxacode(){
     7         $url = "https://api.weixin.qq.com/wxa/getwxacode?";
     8         $url .= "access_token=" . getToken();
     9         $postdata = [
    10             "path" => "pages/index/index?clientId=3",
    11             "width" => 430,
    12         ];
    13 
    14         $res = curl_post($url,json_encode($postdata),$options=array());
    15         $img = './img/'.time().'.jpg';
    16         $r = file_put_contents($img,$res);
    17         echo "<img src='".$img."'>";
    18 
    19     }
    20 
    21 
    22     //发送获取token请求,获取token(2小时)
    23     function getToken() {
    24         $url = getTokenUrlStr();
    25         $res = curl_post($url,$postdata='',$options=array());
    26        
    27         $data = json_decode($res,JSON_FORCE_OBJECT);
    28         return $data['access_token'];
    29     }
    30 
    31     //获取token的url参数拼接
    32     function getTokenUrlStr()
    33     {
    34         $getTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?"; //获取token的url
    35         $WXappid     =  "wx0399845015067c51"; //APPID
    36         $WXsecret    = "7d7205f85b79805006ecfa2121ef4272"; //secret
    37         $str  = $getTokenUrl;
    38         $str .= "grant_type=client_credential&";
    39         $str .= "appid=" . $WXappid . "&";
    40         $str .= "secret=" . $WXsecret;
    41 
    42         return $str;
    43     }
    44 
    45     function curl_post($url='',$postdata='',$options=array()){
    46         $ch=curl_init($url);
    47         curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    48         curl_setopt($ch,CURLOPT_POST,1);
    49         curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
    50         curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    51         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    52         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    53         if(!empty($options)){
    54             curl_setopt_array($ch, $options);
    55         }
    56         $data=curl_exec($ch);
    57         curl_close($ch);
    58         return $data;
    59     }
    60 
    61     function curl_get($url='',$options=array()){
    62         $ch=curl_init($url);
    63         curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    64         curl_setopt($ch,CURLOPT_TIMEOUT,5);
    65         if(!empty($options)){
    66             curl_setopt_array($ch,$options);
    67         }
    68         $data=curl_exec($ch);
    69         curl_close($ch);
    70         return $data;
    71     }

     

    转载于:https://www.cnblogs.com/cqlb/p/9561376.html

    展开全文
  • php生成二维码

    2018-07-05 10:49:21
    最简单最实例的goolge开源方法1.google开放api代码如下:$urlToEncode="... /** * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param string $ch...

    最简单最实例的goolge开源方法

    1.google开放api

    代码如下:

    1. $urlToEncode="http://www.helloweba.com";
    2. generateQRfromGoogle($urlToEncode);
    3. /**
    4. * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】
    5. * @param string $chl 二维码包含的信息,可以是数字、字符、二进制信息、汉字。
    6. 不能混合数据类型,数据必须经过UTF-8 URL-encoded
    7. * @param int $widhtHeight 生成二维码的尺寸设置
    8. * @param string $EC_level 可选纠错级别,QR码支持四个等级纠错,用来恢复丢失的、读错的、模糊的、数据。
    9. * L-默认:可以识别已损失的7%的数据
    10. * M-可以识别已损失15%的数据
    11. * Q-可以识别已损失25%的数据
    12. * H-可以识别已损失30%的数据
    13. * @param int $margin 生成的二维码离图片边框的距离
    14. */
    15. function generateQRfromGoogle($chl,$widhtHeight ='150',$EC_level='L',$margin='0')
    16. {
    17. $chl = urlencode($chl);
    18. echo '<img src="http://chart.apis.google.com/chart?chs='.$widhtHeight.'x'.$widhtHeight.'
    19. &cht=qr&chld='.$EC_level.'|'.$margin.'&chl='.$chl.'" alt="QR code" widhtHeight="'.$widhtHeight.'
    20. " widhtHeight="'.$widhtHeight.'"/>';
    21. }


    2.php类库PHP QR Code

    地址:http://phpqrcode.sourceforge.net/
    下载:http://sourceforge.net/projects/phpqrcode/

           下载官网提供的类库后,只需要使用phpqrcode.php就可以生成二维码了,当然您的PHP环境必须开启支持GD2。phpqrcode.php提供了一个关键的png()方法,其中参数$text表示生成二位的的信息文本;参数$outfile表示是否输出二维码图片文件,默认否;参数$level表示容错率,也就是有被覆盖的区域还能识别,分别是L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%);参数$size表示生成图片大小,默认是3;参数$margin表示二维码周围边框空白区域间距值;参数$saveandprint表示是否保存二维码并显示。

    代码如下:

    1. public static function png($text, $outfile=false, $level=QR_ECLEVEL_L, $size=3, $margin=4,
    2. $saveandprint=false)
    3. {
    4. $enc = QRencode::factory($level, $size, $margin);
    5. return $enc->encodePNG($text, $outfile, $saveandprint=false);
    6. }

          调用PHP QR Code:

    1. include 'phpqrcode.php';
    2. QRcode::png('http://www.helloweba.com');

           实际应用中,我们会在二维码的中间加上自己的LOGO,已增强宣传效果。那如何生成含有logo的二维码呢?其实原理很简单,先使用PHP QR Code生成一张二维码图片,然后再利用php的image相关函数,将事先准备好的logo图片加入到刚生成的原始二维码图片中间,然后重新生成一张新的二维码图片。

    1. include 'phpqrcode.php';
    2. $value = 'http://www.helloweba.com'; //二维码内容
    3. $errorCorrectionLevel = 'L';//容错级别
    4. $matrixPointSize = 6;//生成图片大小
    5. //生成二维码图片
    6. QRcode::png($value, 'qrcode.png', $errorCorrectionLevel, $matrixPointSize, 2);
    7. $logo = 'logo.png';//准备好的logo图片
    8. $QR = 'qrcode.png';//已经生成的原始二维码图
    9. if ($logo !== FALSE) {
    10. $QR = imagecreatefromstring(file_get_contents($QR));
    11. $logo = imagecreatefromstring(file_get_contents($logo));
    12. $QR_width = imagesx($QR);//二维码图片宽度
    13. $QR_height = imagesy($QR);//二维码图片高度
    14. $logo_width = imagesx($logo);//logo图片宽度
    15. $logo_height = imagesy($logo);//logo图片高度
    16. $logo_qr_width = $QR_width / 5;
    17. $scale = $logo_width/$logo_qr_width;
    18. $logo_qr_height = $logo_height/$scale;
    19. $from_width = ($QR_width - $logo_qr_width) / 2;
    20. //重新组合图片并调整大小
    21. imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,
    22. $logo_qr_height, $logo_width, $logo_height);
    23. }
    24. //输出图片
    25. imagepng($QR, 'helloweba.png');
    26. echo '<img src="helloweba.png">';


    对于第二种方法:如果不使用$filename,第二个参数为false的时候,就不会把二维码图片保存,而是直接输出。

    现在还有一些如有:libqrencode与QRcode Perl CGI & PHP scripts二维码生成插件大家喜欢也可看看。

    3.基于jquery的二维码生成插件qrcode,在页面中调用该插件就能生成对应的二维码。

    qrcode其实是通过使用jQuery实现图形渲染,画图,支持canvas(HTML5)和table两种方式,

    可以到https://github.com/jeromeetienne/jquery-qrcode获取最新的代码。

    如何使用

    (1)、首先在页面中加入jquery库文件和qrcode插件。

    1. <script type="text/javascript" src="jquery.js"></script> 
    2. <script type="text/javascript" src="jquery.qrcode.min.js"></script> 

    (2)、在页面中需要显示二维码的地方加入以下代码:

    <div id="code"></div> 
    

    (3)、调用qrcode插件。

    qrcode支持canvas和table两种方式进行图片渲染,默认使用canvas方式,效率最高,当然要浏览器支持html5。直接调用如下:

    $('#code').qrcode("http://www.helloweba.com"); //任意字符串 
    

    您也可以通过以下方式调用:

    1. $("#code").qrcode({ 
    2.     render"table"//table方式 
    3.     width: 200//宽度 
    4.     height:200//高度 
    5.     text: "www.helloweba.com" //任意内容 
    6. }); 

    这样就可以在页面中直接生成一个二维码,你可以用手机“扫一扫”功能读取二维码信息。

    (4).识别中文

    我们试验的时候发现不能识别中文内容的二维码,通过查找多方资料了解到,jquery-qrcode是采用charCodeAt()方式进行编码转换的。而这个方法默认会获取它的Unicode编码,如果有中文内容,在生成二维码前就要把字符串转换成UTF-8,然后再生成二维码。您可以通过以下函数来转换中文字符串:

    1. function toUtf8(str{    
    2.     var out, i, len, c;    
    3.     out = "";    
    4.     len = str.length;    
    5.     for(i = 0; i < len; i++) {    
    6.         c = str.charCodeAt(i);    
    7.         if ((c >= 0x0001) && (c <= 0x007F)) {    
    8.             out += str.charAt(i);    
    9.         } else if (c > 0x07FF{    
    10.             out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));    
    11.             out += String.fromCharCode(0x80 | ((c >>  6) & 0x3F));    
    12.             out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));    
    13.         } else {    
    14.             out += String.fromCharCode(0xC0 | ((c >>  6) & 0x1F));    
    15.             out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));    
    16.         }    
    17.     }    
    18.     return out;    
    19. } 

    以下示例:

    1. var str = toUtf8("普罗旺斯没有故事"); 
    2. $('#code').qrcode(str);

    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


    TP5使用二维码PHP QR Code生成带LOGO和不带LOGO的二维码


    首先下载这个类:http://phpqrcode.sourceforge.net/

    然后,把下载的文件放到thinkphp/library/Vendor下面,(注意:Vendor的首字母大写。没有的话创建一个文件夹。)


    接着在根目录下vendor下面上传phpqrcode。

    然后再需要调用的方法里面调用就可以了:

     public function getWchatQrcode($users_id=1){ 
            //带LOGO
            // $url = 'http://mydd.0317cn.net/index.php/Home/Logo/res/users_id/'.$users_id; //二维码内容  
            // $errorCorrectionLevel = 'L';//容错级别  
            // $matrixPointSize = 9;//生成图片大小  
            // //生成二维码图片  
            // Vendor('phpqrcode.phpqrcode');
            // $object = new \QRcode();
            // $ad = 'erweima/'.$users_id.'.jpg';
            // $object->png($url, $ad, $errorCorrectionLevel, $matrixPointSize, 2);  
            // $logo = 'erweima/2.jpg';//准备好的logo图片 
            // $QR = 'erweima/'.$users_id.'.jpg';//已经生成的原始二维码图  
    
            // 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);  
            // }
            //输出图片  带logo图片
            // imagepng($QR, 'erweima/'.$users_id.'.png'); 
            
    
            //不带LOGO
            Vendor('phpqrcode.phpqrcode');
            //生成二维码图片
            $object = new \QRcode();
            $url='http://www.shouce.ren/';//网址或者是文本内容
            $level=3;
            $size=4;
            $ad = 'erweima/'.$users_id.'.jpg';
            $errorCorrectionLevel =intval($level) ;//容错级别
            $matrixPointSize = intval($size);//生成图片大小
            $object->png($url,  $ad, $errorCorrectionLevel, $matrixPointSize, 2);  
             
        }
    

    这是带LOGO和不带LOGO的demo。
    然后URL访问这个方法,生成一个二维码:



    https://www.jianshu.com/p/cd2f501b815b


    展开全文
  • PHP生成二维码

    2019-03-07 16:54:02
    public function code() { $wordId = input('wordId'); if (!$wordId) { $this-&gt;error('数据异常'); } $word = Db::name('word'); $word_data = $word-&gt;where('word_id', $wordId)-&...
  • PHP生成二维码与识别二维码

    万次阅读 2018-08-17 17:28:03
    二维码的分类 线性堆叠式二维码 矩阵式二维码 二维码的优缺点 优点 信息容量大 编码范围广 容错能力强 译码可靠性高 可引入加密措施 成本低,易制作 缺点 二维码技术成为手机病毒、钓鱼网站传播的新...
  • 使用phpqrcode生成二维码

    万次阅读 多人点赞 2017-06-28 18:53:44
    使用PHP语言生成二维码,还是挺有难度的,当然调用生成二维码图片的接口(比如:联图网http://www.liantu.com/的接口)除外,如果自己写代码生成,真的无从下手。然而,我们可以使用phpqrcode这个现成的类文件,PHP...
  • PHPqrCode是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo, 查看地址:http://phpqrcode.sourceforge.net/。 下载官网提供的类库后,只需要使用phpqrcode.php就可以生成二维码...
  • 这两天在开发一个支付宝授权功能,因为要... 我们先来创建我们的项目结构,生成二维码我们用的是phpqrcode库进行生成,我们先创建我们的图片存放文件夹img文件夹,并将phpqrcode库放到我们项目中,代码结构如下: ...
  • 介绍一个php生成二维码类和方法,是一位外国友人技术员写的,有需要的朋友可以自行学习研究,如果朋友们有更好的此类和方法可以发送来与大家共同学习交流。
  • php生成二维码并返回给前端页面显示

    万次阅读 热门讨论 2018-01-20 01:00:05
    一、背景  需求是需要在后台点击...1、生成二维码  这里使用的是qrcode这个第三方。网上百度,教程一大堆,这里我就不细说了。这边使用的是tp3.2.3框架。 //引入第三方 Vendor('phpqrcode.phpqrcode'); $errorC
  • 引用phpqrcode.php生成二维码; public function getcode(){ //默认底图和logo $path = "./images/share/";//路径 if (!is_dir($path)) { load()->func('file'); m...
  • 使用phpqrcode.php生成二维码并合并到背景图片上 1.找到phpqrcode类库的phpqrcode.php引入到你的代码中 (1)地址:
  • 库网站 ... 参考文章:... 随着科技的进步,二维码应用领域越来越广泛,今天我给大家分享下如何使用PHP生成二维码,以及如何生成中间带LOGO图像的二维码 使用PHP QR Code生成二维码 HP QR...
  • php 生成二维码一些问题及解决办法

    千次阅读 2018-11-13 15:22:55
    到做集群的时候该怎么办,那么这样问题就来了,在A服务器内,我们生成的二维码地址在public目录下,用户访问的是B服务器,而B服务器public目录下面就没有了该路径(因为没有生成二维码),所以现在问题就...
  • php生成二维码,不上传服务器 1.写生成二维码接口,返回的是二维码图片 public function qr_code(){ header("content-type:application/json; charset=utf-8"); header("Access-Control-Allow-...
  • PHP生成二维码名片带LOGO并解决LOGO失真
  • 1.首先去官网下载PHPqrCode库文件,只需要里面的phpqrcode.php文件,下载地址:...* phpqrcode php生成二维码 * $frame string 二维码内容 * $filename string|false 默认为否,不生成文件,只将二维码图片返回...
1 2 3 4 5 ... 20
收藏数 10,893
精华内容 4,357
关键字:

php生成二维码