HP QR Code 生成二维码

最近需要做一个扫码登录的功能,通过HP QR Code来实现,HP QR Code是一个开放源代码的php生成二维码的类库

地址:http://phpqrcode.sourceforge.net/

通过 phpqrcode.php 的png()方法即可生成二维码图片,png()方法参数说明:

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

第一个参数$text,

第二个参数$outfile默认为否,不生成文件,只将二维码图片返回,否则需要给出存放生成二维码图片的路径

第三个参数$level默认为L,这个参数可传递的值分别是L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%)。这个参数控制二维码容错率,不同的参数表示二维码可被覆盖的区域百分比。

利用二维维码的容错率,我们可以将头像放置在生成的二维码图片任何区域。

第四个参数$size,控制生成图片的大小,默认为4

第五个参数$margin,控制生成二维码的空白区域大小

第六个参数$saveandprint,保存二维码图片并显示出来,$outfile必须传递图片路径。

官方文档实例(生成图片):

    echo "<h1>PHP QR Code</h1><hr/>";

    //set it to writable location, a place for temp generated PNG files
    $PNG_TEMP_DIR = dirname(__FILE__).DIRECTORY_SEPARATOR.‘temp‘.DIRECTORY_SEPARATOR;

    //html PNG location prefix
    $PNG_WEB_DIR = ‘temp/‘;

    include "qrlib.php";    

    //ofcourse we need rights to create temp dir
    if (!file_exists($PNG_TEMP_DIR))
        mkdir($PNG_TEMP_DIR);

    $filename = $PNG_TEMP_DIR.‘test.png‘;

    //processing form input
    //remember to sanitize user input in real-life solution !!!
    $errorCorrectionLevel = ‘L‘;
    if (isset($_REQUEST[‘level‘]) && in_array($_REQUEST[‘level‘], array(‘L‘,‘M‘,‘Q‘,‘H‘)))
        $errorCorrectionLevel = $_REQUEST[‘level‘];    

    $matrixPointSize = 4;
    if (isset($_REQUEST[‘size‘]))
        $matrixPointSize = min(max((int)$_REQUEST[‘size‘], 1), 10);

    if (isset($_REQUEST[‘data‘])) { 

        //it‘s very important!
        if (trim($_REQUEST[‘data‘]) == ‘‘)
            die(‘data cannot be empty! <a href="?">back</a>‘);

        // user data
        $filename = $PNG_TEMP_DIR.‘test‘.md5($_REQUEST[‘data‘].‘|‘.$errorCorrectionLevel.‘|‘.$matrixPointSize).‘.png‘;
        QRcode::png($_REQUEST[‘data‘], $filename, $errorCorrectionLevel, $matrixPointSize, 2);    

    } else {    

        //default data
        echo ‘You can provide data in GET parameter: <a href="?data=like_that">like that</a><hr/>‘;
        QRcode::png(‘PHP QR Code :)‘, $filename, $errorCorrectionLevel, $matrixPointSize, 2);    

    }

项目实例(不生成图片,直接在浏览器输出):

test.php

include "qrlib.php";    

if (empty($PNG_TEMP_DIR)) {
    //set it to writable location, a place for temp generated PNG files
    $PNG_TEMP_DIR = dirname(__DIR__).DIRECTORY_SEPARATOR.‘../web/upload‘.DIRECTORY_SEPARATOR;
}

if (empty($PNG_WEB_DIR)) {
    //html PNG location prefix
    $PNG_WEB_DIR = ‘web/upload/‘;
}

//ofcourse we need rights to create temp dir
if (!file_exists($PNG_TEMP_DIR))
    mkdir($PNG_TEMP_DIR);

$filename = $PNG_TEMP_DIR.time().‘.png‘;

//processing form input
//remember to sanitize user input in real-life solution !!!
if (in_array($errorCorrectionLevel, array(‘L‘,‘M‘,‘Q‘,‘H‘))) {
    $errorCorrectionLevel = $errorCorrectionLevel;
} else {
    $errorCorrectionLevel = "L";
}

if ($matrixPointSize)
    $matrixPointSize = min(max((int)$matrixPointSize, 1), 10);

if (!empty($data)) {
    //it‘s very important!
    if (trim($data) == ‘‘)
        die(‘data cannot be empty! <a href="?">back</a>‘);

    // user data
    $filename = $PNG_TEMP_DIR.time().md5($data.‘|‘.$errorCorrectionLevel.‘|‘.$matrixPointSize).‘.png‘;
    QRcode::png($data, false, $errorCorrectionLevel, $matrixPointSize, 2);
} else {
    //default data
    //echo ‘You can provide data in GET parameter: <a href="?data=like_that">like that</a><hr/>‘;
    QRcode::png(‘PHP QR Code :)‘, false, $errorCorrectionLevel, $matrixPointSize, 2);
}

新建一个页面用于直接输出二维码

    /**
     * 在浏览器上直接生成二维码
     */
    public function actionPng() {
        $data = \Yii::$app->request->get(‘data‘,‘‘);
        $data = base64_decode($data);
        $PNG_TEMP_DIR = ‘‘;
        $PNG_WEB_DIR = ‘‘;
        $errorCorrectionLevel = "M";
        $matrixPointSize = 3;
        include ‘../components/phpqrcode/test.php‘;
    }

引用:

<iframe src="<?=/tv-wall/png?data=‘.base64_encode($data)?>"></iframe>

注:如果直接在页面上输出,将输出图片的二进制码,通过浏览器解析显示出图片,页面不能输出任何其他东西,不然浏览器无法解析将直接输出二进制码,所以这里在一个独立的页面显示二维码图片,然后通过iframe引用进来

时间: 2024-12-26 20:27:58

HP QR Code 生成二维码的相关文章

HP QR Code (php二维码生成类库)

HP QR Code是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,查看地址: http://phpqrcode.sourceforge.net/ 下载官网提供的类库后,只需要使用phpqrcode.php就可以生成二维码了,当然您的PHP环境必须开启支持GD2. phpqrcode.php提供了一个关键的png()方法,其中参数$text表示生成二位的的信息文本:参数$outfile表示是否输出二维码图片 文件,默认否:参数$level表示容错率,也就是

使用PHP QR Code生成二维码

HP QR Code是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,查看地址: http://phpqrcode.sourceforge.net/ 下载官网提供的类库后,只需要使用phpqrcode.php就可以生成二维码了,当然您的PHP环境必须开启支持GD2. phpqrcode.php提供了一个关键的png()方法,其中 参数$text表示生成二位的的信息文本: 参数$outfile表示是否输出二维码图片 文件,默认否: 参数$level表示容错率,

PHP通过PHP QR Code生成二维码

1.二维码 二维码 ,又称二维条形码,它是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,在代码编制上巧妙地利用构成计算机内部逻辑基础的"0"."1"比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理.它具有条码技术的一些共性:每种码制有其特定的字符集:每个字符占有一定的宽度:具有一定的校验功能等.同时还具有对不同行的信息自动识别功能.及处理图形旋转变

HP QR Code 实现二维码

二维码简单点说就是图片中含有数据信息,可以是url链接,也可能是其他的 首先下载该类,(http://download.csdn.net/detail/cgjcgs/9100365) 然后直接引入该类就可以开始编码了,使用该类中png方法直接就可以生成二维码很方便 参数$url表示生成二位的的信息文本: 参数$outfile表示是否输出二维码图片 文件,默认否: 参数$level表示容错率,也就是有被覆盖的区域还能识别,分别是 L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,

PHP生成二维码【谷歌API+qrcode+圆角Logo】

这几天在开发公司的企业版块,想在每个企业的展示页面上添加一个公司的二维码,通过扫描二维码便可以将公司的信息导入手机通讯录中,想法产生了,于是开始搜索PHP生成二维码的方法,比较流行的方法主要有两种:1谷歌二维码API:2 PHP QR CODE:本文将重点介绍这两种方法.  方法一:谷歌二维码API 接口地址:https://chart.googleapis.com/chart 官方文档:https://developers.google.com/chart/infographics/docs/

使用PHP生成二维码的两种方法(带logo图像)

一.利用Google API生成二维码 Google提供了较为完善的二维码生成接口,调用API接口很简单,以下是调用代码: $urlToEncode="http://www.jb51.net"; generateQRfromGoogle($urlToEncode); /** * google api 二维码生成[QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式] * @param string $chl 二维码包含的信息,可以是数字.字符.二进制信息

PHP生成二维码二种方法和实例

PHP生成二维码的两个方法和实例,分别使用Google API和PHP二维码生成类库PHP QR Code实现. 之前介绍过通过使用jQuery插件来生成二维码,今天分享下如何使用PHP生成二维码,以及如何生成中间带LOGO图像的二维码.利用Google API生成二维码Google提供了较为完善的二维码生成接口,调用API接口很简单,以下是调用代码: $urlToEncode="http://www.jbxue.com"; generateQRfromGoogle($urlToEnc

自动生成二维码

方法一:<style type="text/css">.eweima{    width:200px; height:200px; margin:auto;}</style><div class="eweima">    <img src="http://localhost/xianhewang/index.php?a=user&user_id=82 width="200" height

两种PHP生成二维码的方法

PHP生成二维码,个人认为最常用的有两种,1.使用google的api生成,2.使用PHP QR Code生成,两种方法生成的二维码都是很清淅的,效果不错.下面来分别说明这两种方法如何实现. 一.PHP使用google api在线生成二维码: 关于这个API的介绍就不说了吧,你可以去Google的官方网站查询,相信大家关注的是具体代码,如下: <?php $urlToEncode="http://www.baidu.com";//要生成二维码的网址 generateQRfromG