fastadmin 框架 生成qr code 二维码图片,PHP 7.4版本

server/2024/12/27 20:24:46/

注意:
1、不同版本,安装qr code 用法不同。PHP8.0以上用qr code 4.0版本, PHP7.4用 qr code3.0版本

2、项目根目录安装:

//安装3.0版本
composer require endroid/qr-code:^3.0
//检查安装版本
composer show endroid/qr-code
选Y  

3、使用方式:

use Endroid\QrCode\QrCode;
use Endroid\QrCode\Writer\PngWriter; // 使用 PngWriter
use Endroid\QrCode\Writer\JpgWriter;
use Endroid\QrCode\Writer\SvgWriter;public function index()
{$qrCode = new QrCode($OrderList['invoice_no']);  // 使用发票号作为二维码内容$qrCode->setSize(300); // 设置二维码的大小$qrCode->setMargin(10); // 设置二维码的边距$writer = new PngWriter(); // 确保初始化了 PngWriter// 定义二维码保存路径$qrCodePath = $_SERVER['DOCUMENT_ROOT'] . '/uploads/qrcodes/' . 'order_' . $OrderList['invoice_no'] . '.png';// 创建目录(如果目录不存在)$dirPath = dirname($qrCodePath); // 获取保存路径的父目录if (!is_dir($dirPath)) {mkdir($dirPath, 0777, true); // 创建目录并设置权限}// 保存二维码图片$writer->writeFile($qrCode, $qrCodePath); // 保存二维码文件// 保存二维码文件到指定路径// 更新订单数据,添加二维码图片路径$orderData['image'] = '/uploads/qrcodes/' . 'order_' . $OrderList['invoice_no'] . '.png';//更新到数据库指定路径,根据自己逻辑而定print_r($orderData);exit;
}

4、如果直接使用,会出现错误,这里修改了一下接口文件代码, 根目录搜索 : AbstractWriter.php 文件

//代码第27行左右public function writeFile(QrCodeInterface $qrCode, string $path): string{// 生成二维码字符串(图像内容)$string = $this->writeString($qrCode);// 将图像内容保存到指定路径file_put_contents($path, $string);// 返回保存二维码图像的路径 ,新增了返回路径,就没报错了return $path;  }

http://www.ppmy.cn/server/153716.html

相关文章

游戏引擎学习第59天

回顾并计划接下来的一天 在处理实体的空间划分时,遇到了一些问题。例如,虽然树和玩家应该在某些情况下被排除在外,但目前的系统仍然会出现不合逻辑的渲染结果,这在视觉上并不符合预期。尽管这些问题主要是渲染上的,并…

【网络安全零基础入门】PHP环境搭建、安装Apache、安装与配置MySQL(非常详细)零基础入门到精通,收藏这一篇就够(01)_php安装配置教程

这是大白给粉丝朋友准备的网络安全零基础入门第八章PHP入门的知识章节里的环境搭建。 喜欢的朋友们,记得给大白点赞支持和收藏一下,关注我,学习黑客技术。 一、php简介 php定义:一种服务器端的 HTML脚本/编程语言,是…

店铺营业状态设置

admineShopController RestController("admineShopController") RequestMapping("/admin/shop") Api(tags "店铺相关接口") Slf4j public class ShopController {//设置一个常量 因为经常使用public static final String KEY "SHOP-ST…

HarmonyOS NEXT 实战之元服务:静态案例效果---查看国内航班服务

背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图1完整代码案例如下: Index代码 import { authen…

桥接模式(Bridge Pattern)

桥接模式(Bridge Pattern)是一种结构型设计模式,用于将抽象部分与实现部分分离,使它们可以独立变化。它的核心思想是通过引入一个“桥”类,将抽象层与实现层解耦。 桥接模式的结构 Abstraction(抽象部分&am…

Golang中的Map是怎么遍历的

在 Golang 中,遍历 map 的常见方法是使用 for...range 循环。map 是无序的键值对集合,因此遍历 map 时,每次迭代访问的键值对顺序可能不同。 以下是一个遍历 map 的示例: package mainimport "fmt"func main() {// 创…

【Linux】如何对比两个文件数据不同的地方

简介 可以使用vimdiff命令和diff diff使用 #使用diff命令对比数据 #diff 是最常用的文件对比工具,能够显示两个文件之间的不同之处。基本用法: diff file1.txt file2.txt #diff 会逐行对比文件,并显示它们之间的差异。 #输出中&#xff0c…

论文阅读 - 《Large Language Models Are Zero-Shot Time Series Forecasters》

Abstract 通过将时间序列编码为数字组成的字符串,我们可以将时间序列预测当做文本中下一个 token预测的框架。通过开发这种方法,我们发现像GPT-3和LLaMA-2这样的大语言模型在下游任务上可以有零样本时间序列外推能力上持平或者超过专门设计的时间序列训…