实现微信公众号的生成二维码,二维码和图片合并

要将二维码和图片合并,你可以使用 PHP 的图像处理库,例如 GD 库或 Imagick。下面是一个使用 GD 库的基本示例

php 复制代码
     $user_id = $request->input('user_id');
        if (!$user_id) {
            return $this->error('操作失败');
        }

        // 生成二维码
        $url = "域名/user_id={$user_id}";
        $qr = QrCode::format('png')->size(180)->generate($url);

        // 创建二维码图像
        $qrImage = imagecreatefromstring($qr);

        // 加载背景图片
        $backgroundImage = imagecreatefromjpeg(public_path('iamges/poster.jpg')); // 修正路径

        // 获取二维码和背景图片的尺寸
        $qrWidth = imagesx($qrImage);
        $qrHeight = imagesy($qrImage);
        $bgWidth = imagesx($backgroundImage);
        $bgHeight = imagesy($backgroundImage);

        // 计算二维码放置的位置(例如右下角)
        $destX = $bgWidth - $qrWidth - 270; // 右边距10像素
        $destY = $bgHeight - $qrHeight - 125; // 下边距10像素
        // 将二维码合并到背景图片
        imagecopy($backgroundImage, $qrImage, $destX, $destY, 0, 0, $qrWidth, $qrHeight);

        // 保存合成后的图片到临时文件
        $tempPath = tempnam(sys_get_temp_dir(), 'qr_') . '.png';
        imagepng($backgroundImage, $tempPath);

        // 释放内存
        imagedestroy($qrImage);
        imagedestroy($backgroundImage);

        // 读取临时文件并转为Base64
        $base64 = base64_encode(file_get_contents($tempPath));
        $base64 = 'data:image/png;base64,' . $base64;

        // 删除临时文件
        unlink($tempPath);

        return $base64;
  1. 生成二维码 :使用 QrCode::generate 方法生成二维码图像。
  2. 加载背景图片 :使用 imagecreatefromjpeg 加载背景图片(可以是其他格式,如 PNG)。
  3. 合并图片 :使用 imagecopy 将二维码合并到背景图片的指定位置。
  4. 输出图片:将合并后的图片输出为 JPEG 格式。
相关推荐
Irene19911 小时前
ElementPlus 与成熟后台框架对比:vue-element-plus-admin、vue-pure-admin等
前端·ui·框架·vue3
一定要AK4 小时前
刷题时的学习笔记
c++·笔记·学习
尘中客5 小时前
放弃 Echarts?前端直接渲染后端高精度 SVG 矢量图流的踩坑记录
前端·javascript·echarts·前端开发·svg矢量图·echarts避坑
FreeBuf_5 小时前
Chrome 0Day漏洞遭野外利用
前端·chrome
小彭努力中6 小时前
199.Vue3 + OpenLayers 实现:点击 / 拖动地图播放音频
前端·vue.js·音视频·openlayers·animate
2501_916007476 小时前
网站爬虫原理,基于浏览器点击行为还原可接口请求
前端·javascript·爬虫·ios·小程序·uni-app·iphone
前端大波6 小时前
Sentry 每日错误巡检自动化:设计思路与上手实战
前端·自动化·sentry
ZC跨境爬虫7 小时前
使用Claude Code开发校园交友平台前端UI全记录(含架构、坑点、登录逻辑及算法)
前端·ui·架构
慧一居士7 小时前
Vue项目中,何时使用布局、子组件嵌套、插槽 对应的使用场景,和完整的使用示例
前端·vue.js