PHP生成二维码+二维码包含logo图片展示
composer require chillerlan/php-qrcode
用到的扩展自己安装(注:只生成二维码只要开gd扩展就行)


仅生成二维码看这个:
use chillerlan\QRCode\QRCode;public function QRCode(){$qrcode = new QRCode();$url = "http://www.******.com/demo?id=".$id;$response = $qrcode->render($url);return Tools::showJsonMsg('success','操作成功','',$response);}
生成二维码包含logo图片(代码仅供参考,逻辑按照自己的写)
二维码展示大概这样

use chillerlan\QRCode\QRCode;public function QRCode(){$aid = $this->request->getPost('aid');$imgPath = 'uploads/admin/qrcode/'.$aid.'.png';if (file_exists($imgPath)){return Tools::showJsonMsg('success','操作成功','',$imgPath);}if (!$aid) {return Tools::showJsonMsg("error", "id不存在");}$One = $this->agentModel->where(["aid" => $aid])->first();if (!$One) {return Tools::showJsonMsg("error", "不存在");}$qrcode = new QRCode(new QROptions(['version' => 4, // 设置二维码的版本,版本越高,二维码越大'scale'=>10 //二维码大小]));$url = "http://www.******.com/demo?id=".$aid;$response = $qrcode->render($url);// 将SVG格式的二维码数据转换为PNG格式$svgData = str_replace('data:image/svg+xml;base64,', '', $response);$decodedSvgData = base64_decode($svgData);$imagick = new \Imagick();// 读取SVG数据$imagick->readImageBlob($decodedSvgData);// 设置输出格式为PNG$imagick->setImageFormat('png');// 将SVG转换为PNG并获取转换后的数据$pngData = $imagick->getImageBlob();// 创建PNG图像资源$pngImage = imagecreatefromstring($pngData);// 要插入的 Logo 图片路径$logoPath = 'theme/admin/img/logo.png';// 创建 Logo 图片资源$logo = imagecreatefrompng($logoPath);// 获取二维码和 Logo 的宽度和高度$qrCodeWidth = imagesx($pngImage);$qrCodeHeight = imagesy($pngImage);$logoWidth = imagesx($logo);$logoHeight = imagesy($logo);$combinedImage = imagecreatetruecolor(200, 200);// 计算缩放比例$scale = min(200 / $qrCodeWidth, 200 / $qrCodeHeight);// 计算缩放后的宽度和高度$newWidth = $qrCodeWidth * $scale;$newHeight = $qrCodeHeight * $scale;// 创建一个临时画布用于缩放二维码图像$tempImage = imagecreatetruecolor($newWidth, $newHeight);// 将二维码图像缩放到临时画布imagecopyresampled($tempImage, $pngImage, 0, 0, 0, 0, $newWidth, $newHeight, $qrCodeWidth, $qrCodeHeight);// 计算Logo应该放置的位置$logoX = ($newWidth - $logoWidth) / 2;$logoY = ($newHeight - $logoHeight) / 2;// 创建一个新的空白画布,大小为200x200$combinedImage = imagecreatetruecolor(200, 200);// 将Logo图像复制到新的画布上imagecopy($combinedImage, $logo, $logoX, $logoY, 0, 0, $logoWidth, $logoHeight);// 将缩放后的二维码图像叠加在Logo图像的上方imagecopymerge($combinedImage, $tempImage, 0, 0, 0, 0, $newWidth, $newHeight, 70);// 确保目录存在,如果不存在则创建$directory = 'uploads/admin/qrcode/';if (!file_exists($directory)) {mkdir($directory, 0777, true); // 创建目录}// 输出合并后的图像imagepng($combinedImage, $imgPath);// 释放内存imagedestroy($combinedImage);return Tools::showJsonMsg('success','操作成功','',$imgPath);}
前端你自己列表读uploads/admin/qrcode/‘.$aid.’.png这个就行
相关文章:
PHP生成二维码+二维码包含logo图片展示
composer require chillerlan/php-qrcode 用到的扩展自己安装(注:只生成二维码只要开gd扩展就行) 仅生成二维码看这个: use chillerlan\QRCode\QRCode;public function QRCode(){$qrcode new QRCode();$url "http://ww…...
vue项目打包教程
如果是用 vue-cli 创建的项目,则项目目录中没有 config 文件夹,所以我们需要自建一个配置文件;在vue项目目录下创建文件 vue.config.js,需注意文件名称必须是 vue.config.js,然后在文件中插入以下代码: 文件…...
制作电子画册速成攻略,快来试试
当今社会,数字媒体日益普及,电子画册作为一种崭新的展示方式,受到了越来越多人的青睐。它不仅形式新颖,互动性强,而且制作起来也并不复杂。想知道如何快速掌握制作电子画册的技巧吗?我来教你吧。 接下来&…...
【java程序设计期末复习】chapter7 内部类和异常类
内部类和异常类 内部类 ava支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。 注意 (1)内部类的类体中不可以声明类变量和类方法。 (2)外嵌类的类体中可以用内部类…...
Windows下安装配置深度学习环境
Windows下安装配置深度学习环境 1. 准备工作 1.1 环境准备 操作系统:win10 22H2 GPU:Nvidia GeForce RTX 3060 12G 1.2 安装Nvidia驱动、cuda、cuDNN 下载驱动需要注册并登录英伟达账号。我这里将下面用到的安装包放到了百度网盘,可以关注微信…...
如何使用ssh将vscode 连接到服务器上,手把手指导
一、背景 我们在开发时,经常是window上安装一个vscode编辑器,去连接一个虚拟机上的linux,这里常用的是SSH协议,了解其中的操作非常必要。 二、SSH协议 SSH(Secure Shell)是一种安全协议,用于…...
Tomcat调优参数
JVM优化 Tomcat是一个Web容器,所有的jar其实都共享Tomcat中的JVM参数,所以Tomcat的JVM参数优化至关重要。 Tomcat的JVM参数是在启动脚本中设置的,如想要设置最大堆内存和最小堆内存时: 在windows的启动脚本catalina.bat中的set &q…...
云计算和大数据处理
文章目录 1.云计算基础知识1.1 基本概念1.2 云计算分类 2.大数据处理基础知识2.1 基础知识2.3 大数据处理技术 1.云计算基础知识 1.1 基本概念 云计算是一种提供资源的网络,使用者可以随时获取“云”上的资源,按需求量使用,并且可以看成是无…...
VAE-变分自编码器(Variational Autoencoder,VAE)
变分自编码器(Variational Autoencoder,VAE)是一种生成模型,结合了概率图模型与神经网络技术,广泛应用于数据生成、表示学习和数据压缩等领域。以下是对VAE的详细解释和理解: 基本概念 1. 自编码器&#…...
Android Room 使用模版
文章目录 一、配置依赖 plugins {id kotlin-kapt }android {compileOptions {sourceCompatibility JavaVersion.VERSION_17targetCompatibility JavaVersion.VERSION_17}kotlinOptions {jvmTarget 17} }dependencies {implementation("androidx.room:room-runtime:2.4.2&…...
Linux/Ubuntu 中安装 ZeroTier,实现内网穿透,2分钟搞定
相信很多人都有远程连接家中设备的需求,如远程连接家中的NAS、Windows等服务,所以会涉及到一个内网穿透工具的使用,如果没有公网IP的情况下,推荐大家使用ZeroTier,这是一款强大的内网穿透工具。 mac和windows版的操作…...
java技术:oauth2协议
目录 一、黑马程序员Java进阶教程快速入门Spring Security OAuth2.0认证授权详解 1、oauth服务 WebSecurityConfig TokenConfig AuthorizationServer 改写密码校验逻辑实现类 2、oauth2支持的四种方式: 3、oauth2授权 ResouceServerConfig TokenConfig 4、…...
Java 18 新特性详解
Java 18 新特性详解 Java 18 作为 Oracle 推出的又一重要版本,继续秉持着 Java 平台“创新但不破坏”的原则,带来了多项旨在提升开发效率、性能和安全性的新特性。本篇文章将深入解析 Java 18 引入的主要特性,并探讨它们如何影响开发者的工作…...
【css3】06-css3新特性之网页布局篇
目录 伸缩布局或者弹性布局【响应式布局】 1 设置父元素为伸缩盒子 2 设置伸缩盒子主轴方向 3 设置元素在主轴的对齐方式 4 设置元素在侧轴的对齐方式 5 设置元素是否换行显示 6 设置元素换行后的对齐方式 7 效果测试原码 伸缩布局或者弹性布局【响应式布局】 1 设置父元…...
【开源】大学生竞赛管理系统 JAVA+Vue+SpringBoot+MySQL
目录 一、系统介绍 学生管理模块 教师管理模块 竞赛信息模块 竞赛报名模块 二、系统截图 三、核心代码 一、系统介绍 基于Vue.js和SpringBoot的大学生竞赛管理系统,分为管理后台和用户网页端,可以给管理员、学生和教师角色使用,包括学…...
跨境选品师不是神话:普通人也能轻松掌握,开启全球贸易新篇章!
随着互联网技术的飞速发展,跨境电商行业已成为全球经济的新增长点。在这个背景下,一个新兴的职业——跨境选品师,逐渐走进了人们的视野。那么,跨境选品师究竟是做什么的?普通人又该如何成为优秀的跨境选品师呢? 一、跨境选品师的…...
前缀和,差分算法理解
前缀和是什么: 前缀和指一个数组的某下标之前的所有数组元素的和(包含其自身)。前缀和分为一维前缀和,以及二维前缀和。前缀和是一种重要的预处理,能够降低算法的时间复杂度 说个人话就是比如有一个数组: …...
ubuntu/部分docker容器无法访问https站点
ubuntu/部分docker容器无法访问https站点 解决方案 解决方案 默认的系统内可能没有安装根证书,需要安装一下 apt install ca-certificates如果官方源比较慢,可以换为国内源,但是不要使用https...
【MySQL】库的基础操作
🌎库的操作 文章目录: 库的操作 创建删除数据库 数据库编码集和校验集 数据库的增删查改 数据库查找 数据库修改 备份和恢复 查看数据库连接情况 总结 前言: 数据库操作是软件开发中不可或缺的一部分࿰…...
嵌入式0基础开始学习 ⅠC语言(2)运算符与表达式
1.运算符 什么是运算符? 用来进来某种运算的符号 如: - * / (取余,取模) a,几目运算符 根据其操作数的不同 单目运算符 该运算符…...
Unity新手避坑指南:NavMesh烘焙参数(Agent Radius/Height)到底怎么设?附场景实测
Unity导航系统深度解析:Agent参数设置与场景适配实战在Unity游戏开发中,导航系统(Navigation System)是实现角色智能移动的核心模块。对于刚接触Unity导航系统的开发者来说,Agent Radius(代理半径)和Agent Height(代理身高)这两个参数的设置往…...
8款网盘直链下载助手:彻底告别限速烦恼,实现高速下载自由
8款网盘直链下载助手:彻底告别限速烦恼,实现高速下载自由 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移…...
Facebook登录协议逆向解析:appsecret_proof与e2e加密机制
1. 这不是“爬虫教程”,而是一次对现代Web身份协议的解剖实验你有没有试过,在调试一个Facebook登录集成时,浏览器Network面板里突然冒出一串带sig、access_token、e2e、c_user的请求,参数长度动辄上千字符,加密方式五花…...
DeepSeek-R1代码补全实测报告:37个真实项目、8类编程语言、48小时压测后,我删掉了Copilot
更多请点击: https://intelliparadigm.com 第一章:DeepSeek-R1代码补全实测报告总览 DeepSeek-R1 是深度求索(DeepSeek)推出的开源大语言模型,专为代码理解与生成任务优化。本章聚焦其在主流 IDE 环境中代码补全能力的…...
解锁你的音乐收藏:浏览器端音频解密完整指南
解锁你的音乐收藏:浏览器端音频解密完整指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://gitcod…...
代码跑偏白盒补漏:判定节点覆盖全路径测试
位于程序逻辑分叉处,起着关键开通作用的判定节点,意义无比重大。于程序运行进程里,每一条if语句、else语句以及switch语句背后,事实上都暗藏着一条独具特色且彼此独立的执行回路。而测试覆盖的核心使命,就是要把这些回…...
温差发电驱动轻型电动车:热电模块与催化燃烧器的系统集成实践
1. 项目概述:用温差发电驱动轻型电动车最近在琢磨一个挺有意思的玩意儿:能不能给那些轻型的电动车,比如高尔夫球车、园区巡逻车或者小型载货三轮,换上一套不一样的“心脏”?传统的方案,要么背着一大块死沉死…...
ChatGPT自动回复失效真相:微信API接口变更后,必须重写的4段核心Prompt代码(含防封逻辑)
更多请点击: https://intelliparadigm.com 第一章:ChatGPT公众号运营技巧 在微信生态中,将ChatGPT能力深度融入公众号运营,需兼顾合规性、用户体验与自动化效率。微信官方明确禁止直接调用外部AI接口响应用户消息(如透…...
数据预处理实战:缺失值、噪声与归一化处理的核心技术与Python实现
1. 项目概述:为什么数据预处理是模型成败的“胜负手” 在数据科学和机器学习的实战中,我见过太多团队将80%的精力投入到模型调参和算法选型上,却对数据预处理草草了事。结果往往是,一个理论上精妙的模型,因为“喂”进去…...
从PointNet到Transformer:聊聊‘参数共享’这个省内存又提性能的炼丹技巧
从PointNet到Transformer:参数共享如何重塑深度学习效率 在深度学习模型日益复杂的今天,算法工程师们不断面临一个核心矛盾:如何在保持模型性能的同时,有效控制参数规模?当我们处理点云、序列或图结构这类不规则数据时…...
