tp3.2中背景图加文字线上不好使解决方案(上传文字库)

该博客介绍了在ThinkPHP3.2框架中如何解决在线生成二维码图片时背景图加文字不显示的问题。通过在服务器上创建Static目录,上传本地Fonts目录,使用phpqrcode库生成二维码,然后结合imagefttext函数,利用上传的字体库成功添加文字到背景图上。关键步骤包括权限设置、文件传输、图片合并及文字添加。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步:在服务器上项目根目录新建一个目录(Static),并给最大权限!如下图


第二步:打开本地电脑C盘里Windows下面的Fonts.如下图:


第三步:将本地的Fonts整个目录传到服务器的Static目录里并也赋予最高权限.

第四步:控制器里面代码为:

Vendor("phpqrcode");
                // 把生成二维码图片保存到本地
                $path = "Public/Uploads/" . $user_id . ".png"; //本地文件存储路径
                // 纠错级别:L、M、Q、H
                $level = 'H';
                // 点的大小:1到10,用于手机端4就可以了
                $size =5;
                $object=new \QRcode();
                //var_dump($object);die;
                $object->png($url,$path,$level,$size);
                //imagepng($bigImg);exit;//推广二维码生成
                //给生成的二维码图片添加背景图(方法一)
                // $image=new \Think\Image();
                // $image->open('./Public/Uploads/back.png')->water($path,array(240,860),100)->save("./Public/Uploads/".$usermobile.".jpg");
                //给生成的二维码添加背景图(方法二)
                $bigImgPath = 'Public/Uploads/back.png';
                $qCodePath = $path;
                $bigImg = imagecreatefromstring(file_get_contents($bigImgPath));
                $qCodeImg = imagecreatefromstring(file_get_contents($qCodePath));
                list($qCodeWidth, $qCodeHight, $qCodeType) = getimagesize($qCodePath);
                // imagecopymerge使用注解
                imagecopymerge($bigImg, $qCodeImg, 255, 875, 0, 0, $qCodeWidth, $qCodeHight, 100);
                list($bigWidth, $bigHight) = getimagesize($bigImgPath);
                $yourname = $usermobile;
                $red = imagecolorallocate($bigImg, 241,215, 60);
                imagefttext($bigImg, 30, 0, 310, 728, $red, 'Static/Fonts/msyhbd.ttf', $yourname);
                header('Content-Type:image/png');
                $savepath="Public/Uploads/".$usermobile.".png"; //推广二维码本地存储路径
                imagepng($bigImg,$savepath);//推广二维码存到本地
                $this->assign("usermobile",$usermobile);
                $this->display();

注意有一处路径必须写对!如下图(红圈带双箭头的地方):





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值