• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Thinkphp3.2与phpqrcode生成二维码的实例

php 搞代码 4年前 (2022-01-22) 21次浏览 已收录 0个评论

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

    尺寸大小:                边距大小:                     1px            2px            3px            5px            容错级别:                Low (7%)        Medium (15%)        Quartile (25%)        High (30%)            二维码内容:                二维码logo:

控制器:IndexController.class.php

<?phpnamespace 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\<strong>+本文来源gao@daima#com搞(%代@#码网</strong><pre>搞代gaodaima码

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

<?phpfunction 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时生成的二维码:

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

以上就是Thinkphp3.2与phpqrcode生成二维码的实例的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Thinkphp3.2与phpqrcode生成二维码的实例

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址