您的位置:首页 > 编程语言 > PHP开发

thinkphp 整合phpqrcode 生成二维码

2016-07-13 11:03 591 查看
1.先下载phpqrcode扩展库附件解压并放到ThinkPHP/Extend/Vendor目录下,即把phpqrcode扩展库放到拓展包里面

下载地址:phpqrcode.rar

2.普通二维码实例代码(已测试成功):


vendor("phpqrcode.phpqrcode");            $data = 'http://www.baidu.com';            // 纠错级别:L、M、Q、H            $level = 'L';            // 点的大小:1到10,用于手机端4就可以了            $size = 4;            // 下面注释了把二维码图片保存到本地的代码,如果要保存图片,用$fileName替换第二个参数false            //$path = "images/";            // 生成的文件名            //$fileName = $path.$size.'.png';            \QRcode::png($data, false, $level, $size);
3.生成带logo的二维码实例代码(未测试,正在研究中):

/**

 *

 * function qrcode(){

 *     $filename='qrcode.png';

 *     $logo=SITE_PATH."\\Public\\Home\\images\\logo_80.png";

 *     qrcode('http://www.dellidc.com',$filename,false,$logo,8,'L',2,true);

 * }

 *

 * @param $data 二维码包含的文字内容

 * @param $filename 保存二维码输出的文件名称,*.png

 * @param bool $picPath 二维码输出的路径

 * @param bool $logo 二维码中包含的LOGO图片路径

 * @param string $size 二维码的大小

 * @param string $level 二维码编码纠错级别:L、M、Q、H

 * @param int $padding 二维码边框的间距

 * @param bool $saveandprint 是否保存到文件并在浏览器直接输出,true:同时保存和输出,false:只保存文件

 * return string

 */

function qrcode($data,$filename,$picPath=false,$logo=false,$size='4',$level='L',$padding=2,$saveandprint=false){

    vendor("phpqrcode.phpqrcode");//引入工具包

    // 下面注释了把二维码图片保存到本地的代码,如果要保存图片,用$fileName替换第二个参数false

    $path = $picPath?$picPath:SITE_PATH."\\Uploads\\Picture\\QRcode"; //图片输出路径

    mkdir($path);

    //在二维码上面添加LOGO

    if(empty($logo) || $logo=== false) { //不包含LOGO

        if ($filename==false) {

            \QRcode::png($data, false, $level, $size, $padding, $saveandprint); //直接输出到浏览器,不含LOGO

        }else{

            $filename=$path.'/'.$filename; //合成路径

            \QRcode::png($data, $filename, $level, $size, $padding, $saveandprint); //直接输出到浏览器,不含LOGO

        }

    }else { //包含LOGO

        if ($filename==false){

            //$filename=tempnam('','').'.png';//生成临时文件

           die('参数错误');

        }else {

            //生成二维码,保存到文件

            $filename = $path . '\\' . $filename; //合成路径

        }

        \QRcode::png($data, $filename, $level, $size, $padding);

        $QR = imagecreatefromstring(file_get_contents($filename));

        $logo = imagecreatefromstring(file_get_contents($logo));

        $QR_width = imagesx($QR);

        $QR_height = imagesy($QR);

        $logo_width = imagesx($logo);

        $logo_height = imagesy($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);

        if ($filename === false) {

            Header("Content-type: image/png");

            imagepng($QR);

        } else {

            if ($saveandprint === true) {

                imagepng($QR, $filename);

                header("Content-type: image/png");//输出到浏览器

                imagepng($QR);

            } else {

                imagepng($QR, $filename);

            }

        }

    }

    return $filename;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php 二维码 实例 qrcode