ThinkPHP5使用phpqrcode生成二维码

生成指定跳转地址二维码图片:

首先将下载好的phpqrcode.php文件放到指定目录内(我这里用的放在public/phpqrcode目录下),准备调用
之后控制器中调用

    public function qrcode(){
        require_once "./phpqrcode/phpqrcode.php";	//引入类库文件

        $value = "http://www.baidu.com";	//扫码跳转的地址,二维码内容
      	
        $errorCorrectionLevel = 'L';  		//容错级别
        $matrixPointSize = 5;      			//生成图片大小
        //生成二维码图片
        // 判断是否有这个文件夹  没有的话就创建一个
        if(!is_dir("yyzs_qrcode")){
            // 创建文件夹
            mkdir("yyzs_qrcode");
        }
        //设置二维码文件名
        $filename = 'yyzs_qrcode/'.time().rand(10000,9999999).'.png';
        //生成二维码
        \QRcode::png($value,$filename , $errorCorrectionLevel, $matrixPointSize, 2);
        //转换成base64数据
        $image_data = chunk_split(base64_encode(fread(fopen($filename, 'r'), filesize($filename))));
        //获取当前域名

        $domain = request()->domain();
        $url = $domain.'/'.$filename;

        print_r($url);	//输出生成的二维码图片地址
    }

生成结果如下
在这里插入图片描述

扫码接入百度首页

二:很多时候需要将相关二维码放置在一张背景图上,那么该如何操作呢?

    /**
     * 在背景图上生成二维码
     * $bg_img    背景图地址
     * $url       二维码内容url
     * $x   二维码在背景图片上位置的左边距,单位:px (例:436)
     * $y   二维码在背景图片上位置的上边距,单位:px (例:1009)
     * $qrcode_size  二维码(正方形)的尺寸,单位:px (例:238)
     * $white_edge   二维码白边大小
     * $echo_path   生成的二维码海报图片存放路径
     **/
    public function getActivityImg(){
        $bg_img='https://ptpack.iptzx.com/static/yyszs/13901743757.jpg';
        $x=3000;
        $y=720;
        $qrcode_size=256;
        $white_edge=0;

        include_once("./phpqrcode/phpqrcode.php");      //引入类库文件
        $errorCorrectionLevel = QR_ECLEVEL_L;           //容错级别
        $matrixPointSize = 2;                           //生成二维码图片大小
        $qrcode = "qrcod.png";							//用来存放二维码的变量,不是实际图片

        $value= "http://www.baidu.com";	//扫码跳转的地址,二维码内容

        $echo_path='yyzs_qrcode/'.time().rand(10000,9999999).'.png';
        //生成二维码图片
        //参数内容:二维码储存内容,生成存储,防错等级,二维码大小,白边大小
        \QRcode::png($url, $qrcode, $errorCorrectionLevel, $matrixPointSize, $white_edge);	//我这个白边大小是0,因为加上白边控制不了大小,不能完美契合背景图(白边可以让设计搞^.^)

        //合并背景图和二维码
        $background = imagecreatefromstring(file_get_contents($bg_img));	//资源
        $qrcode_res = imagecreatefromstring(file_get_contents($qrcode));	//资源
        list($src_w, $src_h) = getimagesize($qrcode);
        //参数内容:目标图象连接资源,源图象连接资源,目标X坐标点,目标Y坐标点,源的X坐标点,源的Y坐标点,目标宽度,目标高度,源图象的宽度,源图象的高度(参数有疑问的话到:https://www.php.net/manual/zh/function.imagecopyresampled.php 去看,其他博客里瞎写)
        imagecopyresampled($background, $qrcode_res, $x, $y, 0, 0, $qrcode_size, $qrcode_size, $src_w, $src_h);

        //输出到本地文件夹,返回生成图片的路径
        if(!is_dir(dirname($echo_path))){
            mkdir(dirname($echo_path), 0755, true);
//            chown(dirname($echo_path), 'nobody');
//            chgrp(dirname($echo_path), 'nobody');
        }

        imagepng($background,$echo_path);	//把生成的背景图+二维码资源 放到了目标路径下
        imagedestroy($background);
        imagedestroy($qrcode_res);
        return $echo_path;	//生成图片的结果地址
    }

效果如下如下:
在这里插入图片描述

扫码即可接入百度页面

参考:
ThinkPHP5使用phpqrcode生成二维码
使用phpqrcode.php生成二维码并合并到背景图片上

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值