首页 > 其他分享 >laravel生成二维码,并添加背景图片,图标logo

laravel生成二维码,并添加背景图片,图标logo

时间:2024-02-01 17:33:40浏览次数:29  
标签:laravel bg qrcodes fileName 二维码 png QrCode logo 背景图片

1、安装组件

composer require simplesoftwareio/simple-qrcode 1.3.*

在 config/app.php 注册服务提供者:

SimpleSoftwareIO\QrCode\QrCodeServiceProvider::class

同样在 config/app.php 添加 QrCode 门面:

'QrCode' => SimpleSoftwareIO\QrCode\Facades\QrCode::class

2、用法

//生成二维码,并添加logo
public function generateQrCode($id, $dir)
{
    $host = request()->getSchemeAndHttpHost();
    $content = $host.'/red-envelop?id='.$id;
    //字符串是否有https
    if (strpos($host, 'http') === false) {
        $content = 'https://'.$content;
    }
    $fileName = $dir.$id.'.png';
    //1. errorCorrection 容错级别设置
    //      L   7% 的字节码恢复率.
    //      M   15% 的字节码恢复率.
    //      Q   25% 的字节码恢复率.
    //      H   30% 的字节码恢复率.
    //  2.margin    边距设置
    //  3.merge    二维码中添加图片,方法只支持 PNG,参数(图像路径或 URL,图像宽度和高度)
    //  4.backgroundColor(255, 0, 0)  设置二维码背景色
    //  5.color(255,0,255)   颜色
    //  6.size      字体设置
    //  7.generate  设置二维码参数:
    //      $QrCodeText  二维码内容
    //      $imagePath   二维码文件

    QrCode::format('png')->errorCorrection('Q')->margin(0.5)->merge($dir.'/logo/logo.png', 0.3, true)->size(400)->generate($content, $fileName);
    return $fileName;
}

//背景合成
public function qrcodeMerge($fileName, $text)
    {
        // 图片合成
        $bg = imagecreatefrompng($this->dir.'/logo/bg.png');// 提前准备好的海报图  必须是PNG格式
        $qrcodes = imagecreatefrompng($fileName); //二维码
        imagecopyresampled($bg, $qrcodes, 350, 350, 0, 0, imagesx($qrcodes), imagesx($qrcodes), imagesx($qrcodes), imagesx($qrcodes));
        // 设置文字样式
        $font = 'C:\Windows\Fonts\simsun.ttc'; // 替换为你的字体文件路径
        $fontSize = 18; // 字体大小
        $color = imagecolorallocate($bg, 251, 218, 165); // 文字颜色,这里设置为白色
        // 在背景图片上添加文字
        imagettftext($bg, $fontSize, 0, 710, 1060, $color, $font, $text);
        imagepng($bg, $fileName); //生成图片
        imagedestroy($bg);
        imagedestroy($qrcodes);
        $this->info('合成成功:'. $fileName);
        return $fileName;
    }

转换base64

我们有时候需要图片直接转为base64传给前端,需转为png格式

$img = \SimpleSoftwareIO\QrCode\Facades\QrCode::format('png')->size(150)->generate($id);
$img = 'data:image/png;base64,' . base64_encode($img);               

原文链接:https://blog.csdn.net/MrEahon/article/details/123895256

标签:laravel,bg,qrcodes,fileName,二维码,png,QrCode,logo,背景图片
From: https://www.cnblogs.com/chengwens/p/18001709

相关文章

  • 修改主板bios开机logo
    1. 下载AFUWIN5.12.zip,ChangeLogov5.2.0.22.zip   2.准备新logo,大小按原大小800*600可以jpg可以bmp3.操作:①原rom:打开AFUWINGUIx64.EXE程序 点击存储保存桌面原rom(建议多复制一个)②换logo图片:打开ChangeLogo64.exe程序 点击loadimage选择原......
  • css背景图片实现object-fit的效果
     object-fit是一个用于控制替换元素(如<img>或<video>)内容在其容器内布局和缩放的CSS属性。它的作用是调整替换元素的尺寸和位置,使其适应容器,并保持其纵横比例。然而,object-fit属性本身并不直接适用于背景图片。如果你想在背景图片上应用object-fit效果,可以使用background-size......
  • laravel 跨域
    laravel怎么设置跨域(两种方法)在前后端分离的项目中,前端请求后端接口时可能会遇到跨域的问题。其中,一个典型的场景是:前端项目运行在http://localhost:8080,而后端项目运行在http://localhost:8000,这时候就需要设置跨域。在Laravel中,要设置跨域可以采用以下两种方法。1、中间......
  • laravel collect结果集group分组合并数据
    1、需求将相同apply_id的apply_remark用;拼接$r=[['apply_id'=>1,'apply_remark'=>'xxx'],['apply_id'=>1,'apply_remark'=>'xxx2'],['apply_id'=>2......
  • 新品来袭,全国产ARM+FPGA--"RK3568J+Logos-2"工业核心板,让您的硬件设计“更简单”!
    如需选购,请登录创龙科技天猫旗舰店:tronlong.tmall.com!欢迎加入RK3568J技术交流群:567208221欢迎加入Logos-2技术交流群:311416997更多产品详情以及购买咨询可添加如下客服人员微信(即刻添加,马上咨询) 更多RK3568J+Logos-2产品资料可长按二维码识别下载  ......
  • 请使用scss写一个util,用于方便创建毛玻璃特效的背景图片,支持文字在图片上显示,不被遮挡
    下面是一个使用SCSS编写的util,用于创建毛玻璃特效的背景图片,并确保文字不被遮挡。该util使用::before伪元素来创建毛玻璃效果,同时在伪元素上添加文字,以确保文字显示在图片上方。@mixinglassBackground($imageUrl,$textColor:#fff,$blurAmount:10px){position:re......
  • 使用腾讯AIDesign的设计LOGO
         腾讯AIDesign免费开放全部功能,支持logo的智能设计、调优、VI生成、下载。推广期间,每个用户每日可免费下载10款logo及其衍生品,可下载内容包括:高清无水印的彩色logo图片、标准墨稿、标准反色稿、名片设计稿。     我们抱着试试,输入chinacreator字符,生成一些LOGO试......
  • LogoFast:轻松创建引人注目的标志
    LogoFast:创意无限,设计无忧的标志生成工具在当今数字化的时代,品牌标识对于任何企业或个人都至关重要。然而,对于缺乏专业设计技能的人来说,创建一个引人注目的标志可能是一项具有挑战性的任务。在这样的背景下,LogoFast应运而生,为用户提供了一种轻松创建引人注目的标志的创新方式。Lo......
  • laravel 集合&数组
    #列表集合&数组$_list_collection=collect([['name'=>'John','age'=>25],['name'=>'Jane','age'=>30]]);$_list_array=[['name'=>'John','age......
  • 无论删除配置文件,Laravel 8在生产环境中仍无法禁用日志记录
    如果你已经在.env文件中设置了LOG_CHANNEL=null和LOG_LEVEL=null,并且在Laravel8中仍然无法禁用日志记录,可以尝试以下几个方法:phpartisanconfig:clearphpartisancache:clear这将清除配置和缓存,确保您的更改生效。检查环境:确保你正在修改正确的环境文件。在生......