简单的将一个url生成二维码并与背景图合并
由于公司业务需求,又由于没有一个专业的设计,只能用程序随便搞搞合并图,难搞哟
这个功能基于thinkphp5开发,废话不多说,直接上代码
header('Content-Type: image/png');
$uid = 1;//这里是用于区分不同用户
$freaky = "127.0.0.1/public/static/images/freaky.png"; //这里是背景图url
$domain = ROOT_PATH . 'public' . DS . 'static' . DS;
$url = "127.0.0.1/public/index.php/admin/test/qr_code?uid=%2B1DD%2FG7JCxyqdkbLSVXNSw%3D%3D"; //这里是要生成二维码的url
$first_split = mb_strrpos($avatar, '/') + mb_strlen('/');
$last_split = mb_strpos($avatar, '.png'); // 这里是第一次还没有生成合成图片的时候,使用的截取文件名称
if (preg_match('/\_/', $avatar)) { // 当生成过图片之后,会使用 _ 区分合成图片的命名,所以用 _ 作为第二个截取点
$last_split = mb_strpos($avatar, '_');
}
$filename = mb_substr($avatar, $first_split, $last_split - $first_split); // 获取文件名
$ptn = $filename . "_" . $uid . "_";
$link = $domain . 'qrcode' . DS . 'qrcode'; // 二维码路径,这里有个坑啊,生成的二维码并不是带图片后缀的图片,直接是一个文件来着
Vendor('phpqrcode.phpqrcode');
$qRcode = new \QRcode();
$qRcode->png($url, $link, QR_ECLEVEL_L, 4, 2, false, 0xFFFFFF, 0x000000); //第一个是要生成二维码的url,第二个就是保存的路径,然后后面的参数,自己查吧
$QR = imagecreatefromstring(file_get_contents($link));
$avatar_link = imagecreatefromstring(file_get_contents($freaky));
$filenames = get_filenamesbydir($domain . 'qrcode'); // 这里先删除,再生成
foreach ($filenames as $value) {
if (preg_match("/$ptn/", $value)) {
unlink($value);
}
}
imagealphablending($avatar_link, true);
list($link_w, $link_h) = getimagesize($link);
imagecopymerge($avatar_link, $QR, 50, 50, 0, 0, $link_w, $link_h, 100); //这里的参数设置,自己去查一查吧,我这里是随便设的
$name = $ptn . time() . '.png';
$urllink = $domain . 'qrcode' . DS . $name;
imagepng($avatar_link, $urllink); // 根据需要生成相应的图片
imagedestroy($QR);
imagedestroy($avatar_link);
return $name; // 最后返回的路径就是图片保存的路径
···
整体功能这里就算是实现了,能优化的地方,或者说有错误的地方,再说吧,大体思路是这样了
这篇博客介绍如何在ThinkPHP5框架下,通过编程方式简单实现一个URL的二维码生成,并与背景图片进行合并,以满足没有专业设计时的业务需求。
2021

被折叠的 条评论
为什么被折叠?



