Laravel + ThinkPhP 海报生成

ops/2024/9/25 1:47:54/

 相关资料:

小程序 | EasyWeChat

二维码生成

php">public function test(){$config = ['app_id' => 'appid','secret' => 'secret',];$app = Factory::miniProgram($config);$response = $app->app_code->get('pages/index/index', [//二维码大小'width' => 150,//二维码颜色'line_color' => ['r' => 255,'g' => 255,'b' => 0,],]);if ($response instanceof \EasyWeChat\Kernel\Http\StreamResponse) {//保存二维码$filename = $response->saveAs('qrcode', '123.png');//海报生成等逻辑写这个位置//...return $filename;}
}

海报生成

 二维码生成好了之后,把二维码贴在海报的上面

php">//首先我们读取二维码和海报背景图片$posterImage = imagecreatefromjpeg('qrcode/bg.jpg'); //海报
$qrcodeImage = imagecreatefromjpeg('qrcode/123.jpg'); //小程序二维码
//字体
$fontFile = 'qrcode/ziti.ttf';
//文本颜色
$textColor = imagecolorallocate($posterImage, 126, 57, 26);
//字体大小
$textSize = 36;$data = [//第一行文本 和 位置['text' => '你好', 'x' => 110, 'y' => 600]//text 文本//x 左侧距离//y 头部距离
];
//海报上面写字
foreach ($data as $index => $textData) {$text = $textData['text'];$textX = $textData['x'];$textY = $textData['y'];imagettftext($posterImage, $textSize, 0, $textX, $textY, $textColor, $fontFile, $text);
}//获取小程序二维码和海报图片的大小$qrcodeWidth = imagesx($qrcodeImage);
$qrcodeHeight = imagesy($qrcodeImage);//二维码大小
$qrcodeSize = 260; 
//二维码左侧距离
//手动设置用这个代码
// $qrcodeX = 90;
// 自动剧中用这个代码
//获取海报图片的宽度
$posterWidth = imagesx($posterImage);
//自动剧中
$qrcodeX = ($posterWidth - $qrcodeWidth) / 2;
//二维码头部距离
$qrcodeY = 1240;
//复制海报
imagecopyresampled($posterImage, $qrcodeImage, $qrcodeX, $qrcodeY, 0, 0, $qrcodeSize, $qrcodeSize, $qrcodeWidth, $qrcodeHeight);
//  如果还有图片要合并
$image3 = imagecreatefromjpeg('https://www.example.cn/zb1227/zx/201909/W020190909513625276746.jpg');
//  宽度
$newWidth = 900;
//  高度
$newHeight = 600;
// 调整图片尺寸
$resizedImage = imagescale($image3, $newWidth, $newHeight);
// 将调整后的图片复制到海报上
imagecopy($posterImage, $resizedImage, 90, 250, 0, 0, $newWidth, $newHeight);// 海报保存
$outputPath = 'qrcode/poster.jpg';
imagejpeg($posterImage, $outputPath);// 工作完毕
imagedestroy($posterImage);
imagedestroy($qrcodeImage);return response()->json(['status'=>'success','msg'=>'海报生成成功']);

 二维码生成成功


http://www.ppmy.cn/ops/2875.html

相关文章

【JAVA基础篇教学】第八篇:Java中List详解说明

博主打算从0-1讲解下java基础教学,今天教学第八篇:Java中List详解说明。 在 Java 编程中,List 接口是一个非常常用的集合接口,它代表了一个有序的集合,可以包含重复的元素。List 接口提供了一系列操作方法,…

Java - JDK8 下载 安装教程(Mac M芯片)

下载 JDK 安装包 在个人的电脑上,我是比较喜欢使用 zulu 的 JDK,因为它比较早的支持了苹果的 M1 芯片 不论是版本还是功能都非常齐全,各个系统都有对应版本,基于 OpenJDK,免费,下载也方便 官网下载&…

区块链媒体推广的8个成功案例解析-华媒舍

区块链领域作为一个新兴行业,媒体推广对于项目的成功发展起着至关重要的作用。本文将从八个成功案例中来分析区块链媒体推广的重要性和成功策略。 1. 媒体报道对于区块链项目的重要影响 媒体报道是提升区块链项目知名度和用户认可度的重要手段。对于区块链项目来说…

【ElasticSearch】安装

1.官网寻找合适版本下载 这里我选择的是8.11.1 2.解压并启动 然后在浏览器输入http://localhost:9200/,判断是否启动成功 如下所示,则表示启动成功 安装过程中遇到过几个bug,记录在这篇文章中 【ElasticSearch】安装(bug篇&am…

代码随想录第41天| 96.不同的二叉搜索树 动态规划:01背包理论基础

96.不同的二叉搜索树 96. 不同的二叉搜索树 - 力扣(LeetCode) 代码随想录 (programmercarl.com) 动态规划找到子状态之间的关系很重要!| LeetCode:96.不同的二叉搜索树_哔哩哔哩_bilibili 给你一个整数 n ,求恰由 n 个…

JavaEE 初阶篇-深入了解 CAS 机制与12种锁的特征(如乐观锁和悲观锁、轻量级锁与重量级锁、自旋锁与挂起等待锁、可重入锁与不可重入锁等等)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 乐观锁与悲观锁概述 1.1 悲观锁(Pessimistic Locking) 1.2 乐观锁(Optimistic Locking) 1.3 区别与适用场景 2.0 轻…

【云原生数据库:原理与实践】1- 数据库发展历程

1-数据库发展历程 1.1 数据库发展概述 从1960年:Integrated Database System(IDS),该系统是一个网状模型(Network Model)到 IMS(Information Management System),使用了…

基于机器学习的安全检测 网络入侵检测概述

1.概述 入侵检测是网络安全中的经典问题,入侵是指攻击者违反系统安全策略,试图破坏计 算资源的完整性、机密性或可用性的任何行为。由定义可见,入侵并非一种特定的入侵行 为,而是一类入侵行为的统称。常见的网络攻击方式包括拒绝服务攻击、伪装身份入侵等。 入侵检测系统(Intru…