Thinkphp3.2结合phpqrcode生成二维码(含Logo的二维码),附案例

首先,下载phpqrcode,将其解压到项目ThinkPHP\Library\Vendor目录下。
Index_index.html(模板可自行配置)

<form action="{:U(‘index/index‘)}" enctype="multipart/form-data"  method = "post">
    <b>尺寸大小:</b>
        <input type="text" name = "matrixPointSize">    <br>
    <b>边距大小:</b>
        <select class="form-control" name="matrixMarginSize" >
            <option value="1" selected="selected">1px</option>
            <option value="2">2px</option>
            <option value="3">3px</option>
            <option value="4">5px</option>
        </select><br>
    <b>容错级别:</b>
        <select class="form-control" name="errorCorrectionLevel" id="errorCorrectionLevel">
        <option value="L">Low (7%)</option>
        <option value="M" selected="selected">Medium (15%)</option>
        <option value="Q">Quartile (25%)</option>
        <option value="H">High (30%)</option>
        </select><br>
    <b>二维码内容:</b>
        <input type="text" name = "content">    <br>
    <b>二维码logo:</b>
        <input type="file" name = "test" /><br><br>

    <input type="submit" value = "生成二维码">
</form><img src="{$img}" >

控制器:IndexController.class.php

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
        $config = array(
            ‘maxSize‘    =>    3145728,
            ‘rootPath‘   =>    ‘./upload/‘,
            ‘savePath‘   =>    ‘‘,
            ‘saveName‘   =>    array(‘uniqid‘,‘‘),
            ‘exts‘       =>    array(‘jpg‘, ‘gif‘, ‘png‘, ‘jpeg‘),
            ‘autoSub‘    =>    true,
            ‘subName‘    =>    array(‘date‘,‘Ymd‘),
        );
        $upload = new \Think\Upload($config);// 实例化上传类
        // 上传单个文件
        $info   =   $upload->uploadOne($_FILES[‘test‘]);
        if(!$info) {// 上传错误提示错误信息
            $qrcode_path_new = ‘./Public/Home/images/code‘.‘_‘.date("Ymdhis").‘.png‘;
            $content = $_POST[‘content‘];
            $matrixPointSize = $_POST[‘matrixPointSize‘];
            $matrixMarginSize = $_POST[‘matrixMarginSize‘];
            $errorCorrectionLevel = $_POST[‘errorCorrectionLevel‘];
            makecode_no_pic($content,$qrcode_path_new,$matrixPointSize,$matrixMarginSize,$errorCorrectionLevel);
            $this->assign(‘img‘,$qrcode_path_new);
        }else{
            $qrcode_path = "./upload/".$info[‘savepath‘].$info[‘savename‘];
            $content = $_POST[‘content‘];
            $matrixPointSize = $_POST[‘matrixPointSize‘];
            $matrixMarginSize = $_POST[‘matrixMarginSize‘];
            $errorCorrectionLevel = $_POST[‘errorCorrectionLevel‘];
            $url = "./upload/qrcode/".date("YmdHis").".png";
            makecode($qrcode_path,$content,$matrixPointSize,$matrixMarginSize,$errorCorrectionLevel,$url);
            $this->assign(‘img‘,$url);
            }
        $this->display();
    }
}

然后在项目Application/Home/Common下新建function.php

<?php
function makecode($qrcode_path,$content,$matrixPointSize,$matrixMarginSize,$errorCorrectionLevel,$url){
        /**     参数详情:
         *      $qrcode_path:logo地址
         *      $content:需要生成二维码的内容
         *      $matrixPointSize:二维码尺寸大小
         *      $matrixMarginSize:生成二维码的边距
         *      $errorCorrectionLevel:容错级别
         *      $url:生成的带logo的二维码地址
         * */
        ob_clean ();
        Vendor(‘phpqrcode.phpqrcode‘);
        $object = new \QRcode();
        $qrcode_path_new = ‘./Public/Home/images/code‘.‘_‘.date("Ymdhis").‘.png‘;//定义生成二维码的路径及名称
        $object::png($content,$qrcode_path_new, $errorCorrectionLevel, $matrixPointSize, $matrixMarginSize);
        $QR = imagecreatefromstring(file_get_contents($qrcode_path_new));//imagecreatefromstring:创建一个图像资源从字符串中的图像流
        $logo = imagecreatefromstring(file_get_contents($qrcode_path));
        $QR_width = imagesx($QR);// 获取图像宽度函数
        $QR_height = imagesy($QR);//获取图像高度函数
        $logo_width = imagesx($logo);// 获取图像宽度函数
        $logo_height = imagesy($logo);//获取图像高度函数
        $logo_qr_width = $QR_width / 4;//logo的宽度
        $scale = $logo_width / $logo_qr_width;//计算比例
        $logo_qr_height = $logo_height / $scale;//计算logo高度
        $from_width = ($QR_width - $logo_qr_width) / 2;//规定logo的坐标位置
        imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
        /**     imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
         *      参数详情:
         *      $dst_image:目标图象连接资源。
         *      $src_image:源图象连接资源。
         *      $dst_x:目标 X 坐标点。
         *      $dst_y:目标 Y 坐标点。
         *      $src_x:源的 X 坐标点。
         *      $src_y:源的 Y 坐标点。
         *      $dst_w:目标宽度。
         *      $dst_h:目标高度。
         *      $src_w:源图象的宽度。
         *      $src_h:源图象的高度。
         * */
        Header("Content-type: image/png");
        //$url:定义生成带logo的二维码的地址及名称
        imagepng($QR,$url);
    }
    function makecode_no_pic($content,$qrcode_path_new,$matrixPointSize,$matrixMarginSize,$errorCorrectionLevel){
        ob_clean ();
        Vendor(‘phpqrcode.phpqrcode‘);
        $object = new \QRcode();
        $object::png($content,$qrcode_path_new, $errorCorrectionLevel, $matrixPointSize, $matrixMarginSize);
    }

在没有图片上传的情况下,生成我二维码只是单纯的二维码,只有在有logo上传的时候,才会生成带logo的二维码。

如下图,即没有logo时生成的二维码:

下图即在有图片被上传的时候生成的二维码:

案例源码下载:ThinkPHP_3.2.2.zip

pgpqrcode下载:phpqrcode.rar

时间: 2024-08-31 19:34:00

Thinkphp3.2结合phpqrcode生成二维码(含Logo的二维码),附案例的相关文章

Android Multimedia框架总结(二十三)MediaCodec补充及MediaMuxer引入(附案例)

请尊重分享成果,转载请注明出处,本文来自逆流的鱼yuiop,原文链接:http://blog.csdn.net/hejjunlin/article/details/53729575 前言:前面几章都是分析MediaCodec相关源码,有收到提问,说MediaCodec到底是硬解码还是软解码?看下今天的Agenda: MediaCodec到底是硬解码还是软解码 MediaMuxer初识 MediaMuxer与MediaExtractor进行剪辑视频 效果图 布局实现 逻辑实现 log输出过程 Me

Thinkphp3.2版本结合phpqrcode生成二维码并提供下载

说明:这篇文章主要为大家详细介绍了Thinkphp3.2.3整合phpqrcode生成带二维码的实现方法并提供图像下载,感兴趣的小伙伴们可以参考一下 缘由:Thinkphp中没有二维码相关的库,因此我们可以通过整合phpqrcode来完成生成二维码的功能. 一.phpqrcode下载地址:http://phpqrcode.sourceforge.net/ 放置位置:Thinkphp/Vendor/目录下,如下图 二.写代码 HTML代码 <!DOCTYPE html> <html lan

yii 整合phpqrcode生成二维码附在线演示地址

1,先到官网下载包  http://phpqrcode.sourceforge.net/ 下载官网提供的类库后,只需要使用phpqrcode.php就可以生成二维码了,当然您的PHP环境必须开启支持GD2. phpqrcode.php提供了一个关键的png()方法,其中参数$text表示生成二位的的信息文本:参数$outfile表示是否输出二维码图片 文件,默认否:参数$level表示容错率,也就是有被覆盖的区域还能识别,分别是 L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M

关于php使用phpqrcode生成二维码的完整源码下载

前两天我发表的“php结合phpqrcode生成带图片LOGO的二维码”,有些新手朋友说不知道如何生成,问我能不能提供完整的生成实例,当然能,只有有人需要,我就会努力,昨天晚上花了两个小时写了个完整的源码包,里面的代码包括注释什么的都挺全,还包括有phpqrcode.php文件,如果哪位觉得对自己有需要,可以去下载(博客园这里好像不能发附件哦). 实例效果演示:http://www.codesc.net/other/phpqrcode 完整源码下载:http://www.codesc.net/s

phpqrcode 生成二维码

这个项目需要根据信息来自动生成二维码,到网上搜了下,发现php有生成二维码的类库phpqrcode,所以打算就用这个来生成二维码 从官网下载类库源码http://sourceforge.net/projects/phpqrcode/,下面是测试案例: <?php include('phpqrcode.php'); $value='http://www.cnblogs.com/'; $errorCorrectionLevel = 'L'; $matrixPointSize = 10; QRcode

php结合phpqrcode生成带图片LOGO的二维码

PHP生成带LOGO的二维码,或许很多高手都已经实现了,但之前并没有过多关注这方面,这段有个小项目要用到二维码生成,索引就查了些资料,发些有一个PHP 类库phpqrcode对生成这种二维码很方便,索引就测试了一下,下面把自己的用法和代码与菜鸟分享,希望高手鼓励哦. 首先你需要下载这个类库包,或者我后边会附上这个类库,具体的使用代码: <?php //文件输出 include('phpqrcode.php'); // 二维码数据 $data = 'http://www.codesc.net';

【转载】phpqrcode生成二维码的3种类型步骤

<?php// ==============php phpqrcode 生成二维码======================== // 下载地址:http://sourceforge.net/projects/phpqrcode/files/latest/download // 只需要包含 phpqrcode.php 文件就可以. // 一:直接输出 include "phpqrcode.php"; $value="http://www.top789.cn"

使用phpqrcode生成二维码

使用PHP语言生成二维码,还是挺有难度的,当然调用生成二维码图片的接口(比如:联图网http://www.liantu.com/的接口)除外,如果自己写代码生成,真的无从下手.然而,我们可以使用phpqrcode这个现成的类文件,PHP二维码生成类库,利用它可以轻松生成二维码. 前期准备:1.phpqrcode类文件下载,下载地址:https://sourceforge.net/projects/phpqrcode/2.PHP环境必须开启支持GD2扩展库支持(一般情况下都是开启状态) 方法解读:

利用phpqrcode二维码生成类库合成带logo的二维码并且用合成的二维码生成海报(二)

前期准备 引入phpqrcode类库(下载地址:https://download.csdn.net/download/weixin_37557729/11891240:支持彩色二维码的下载地址:https://download.csdn.net/download/weixin_37557729/11891244) PHP开启GD扩展库支持 1.利用phpqrcode生成二维码: 原理分析: 下载下来的类文件是一个压缩包,包含很多文件和演示程序,我们只需要里边的phpqrcode.php 这一个文