生成指定跳转地址二维码图片:
首先将下载好的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生成二维码并合并到背景图片上