PHP利用phpqrcode生成二维码,并将二维码盖在一张图上实现美化

PHP利用phpqrcode生成二维码,并将二维码放在一张图上实现美化

       这两天在开发一个支付宝授权功能,因为要用到二维码分享扫描功能,每条记录都有专属的二维码,所以需要生成专属二维码并且这个二维码还得有些引导功能,所以需要将生成的二维码放在实现准备好的图片上面。

       我们先来创建我们的项目结构,生成二维码我们用的是phpqrcode库进行生成,我们先创建我们的图片存放文件夹img文件夹,并将phpqrcode库放到我们项目中,代码结构如下:

微信截图_20181026100143.png

img文件夹是我们用来存放生成的二维码图片,以及存放我们实现准备的底图,comm.php文件是我们的公共方法,待会将二维码放在底图的方法我们会写在这里,getQrcode.php是我们生成二维码的方法文件。

       我们先来创建我们的二维码,代码如下:

<?php
header('Access-Control-Allow-Origin:*');
// 响应类型  
header('Access-Control-Allow-Methods:POST');
// 响应头设置  
header('Access-Control-Allow-Headers:x-requested-with,content-type');

header('Content-Type:application/json; charset=utf-8');

include 'phpqrcode.php';
include 'comm.php';
@$id = $_GET['id']; //链接获取参数
$errorCorrentionLevel = 'L'; //容错级别
$matrixPoinSize = 6; //生成图片大小
#拼接URL
$value = 'url'      //跳转地址 
//本地文档相对路径
$url = 'img/';
//定义纠错级别
$errorLevel = "L";
//定义生成图片的宽度和高度,默认为3
$size = 3;
//调用Qrcode类的静态png方法生成二维码团
QRcode::png($value, $url . $id . '.png', $errorCorrentionLevel, $matrixPoinSize, 2);
//新图片
$img = '图片存放具体路径+名字'.png';
//输出图片处理图片
dealImage($img);    //将二维码放在底图某个位置上
//header('location:' . $img);

?>

 这样就会生成一张二维码的图片。

        我们接下来再来封装将二维码放在底图位置上的方法,方法写在comm.php中,代码如下:

<?php
/**
 * 图片处理公共方法
 * Created by PhpStorm.
 * User: p
 * Date: 2018/10/25
 * Time: 20:53
 */

function dealImage($src_path){
    $dst_path = '底部图片具体路径';    //底部图片
//创建图片的实例
    $dst = imagecreatefromstring(file_get_contents($dst_path));
    $src = imagecreatefromstring(file_get_contents($src_path));

//获取水印图片的宽高
    list($src_w, $src_h) = getimagesize($src_path);

//将水印图片复制到目标图片上,最后个参数50是设置透明度,这里实现半透明效果
    imagecopymerge($dst, $src, 190, 350, 0, 0, $src_w, $src_h, 100);
//如果水印图片本身带透明色,则使用imagecopy方法
//imagecopy($dst, $src, 10, 10, 0, 0, $src_w, $src_h);

//输出图片
    list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path);
    switch ($dst_type) {
        case 1://GIF
            header('Content-Type: image/gif');
            imagegif($dst);
            break;
        case 2://JPG
            header('Content-Type: image/jpeg');
            imagejpeg($dst);
            break;
        case 3://PNG
            header('Content-Type: image/png');
            imagepng($dst);
            break;
        default:
            break;
    }
    imagedestroy($dst);
    imagedestroy($src);
}

       这样我们便最终生成我们的最终二维码,大家可以试试~

0条评论

发表评论