简单的将一个url生成二维码并与背景图合并

这篇博客介绍如何在ThinkPHP5框架下,通过编程方式简单实现一个URL的二维码生成,并与背景图片进行合并,以满足没有专业设计时的业务需求。

简单的将一个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;	// 最后返回的路径就是图片保存的路径
···
整体功能这里就算是实现了,能优化的地方,或者说有错误的地方,再说吧,大体思路是这样了




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值