PHP
PHP利用phpqrcode生成二维码,并将二维码盖在一张图上实现美化
PHP利用phpqrcode生成二维码,并将二维码放在一张图上实现美化
这两天在开发一个支付宝授权功能,因为要用到二维码分享扫描功能,每条记录都有专属的二维码,所以需要生成专属二维码并且这个二维码还得有些引导功能,所以需要将生成的二维码放在实现准备好的图片上面。
我们先来创建我们的项目结构,生成二维码我们用的是phpqrcode库进行生成,我们先创建我们的图片存放文件夹img文件夹,并将phpqrcode库放到我们项目中,代码结构如下:
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条评论