Laravel + ThinkPhP 海报生成

相关资料:

小程序 | 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'=>'海报生成成功']);

二维码生成成功

相关推荐
网络安全许木13 分钟前
自学渗透测试第28天(协议补漏与FTP抓包)
运维·服务器·网络安全·渗透测试·php
玖疯子36 分钟前
IT疑难杂症诊疗室:系统性故障排查指南
开发语言·php
IpdataCloud2 小时前
远程办公网络安全中,IP查询工具如何保障数据安全?适用场景与落地指南
tcp/ip·web安全·php
xingpanvip3 小时前
星盘接口开发文档:天象盘接口指南
android·开发语言·python·php·lua
liulian09163 小时前
【Flutter for OpenHarmony第三方库】Flutter for OpenHarmony 离线模式实现:让你的应用无网也能萌萌哒~
开发语言·flutter·华为·php·学习方法·harmonyos
a8a3024 小时前
Laravel 8.x核心特性全面解析
php·laravel
深邃-4 小时前
【Web安全】-Kali,Linux配置(2):Java环境配置,Python环境配置,Conda使用,PIP配置使用,SSH远程登录
java·linux·python·安全·web安全·网络安全·php
2401_873479404 小时前
遭遇DDoS攻击后如何快速分析攻击源?用IP查询+离线库定位异常IP
服务器·开发语言·tcp/ip·php
niucloud-admin13 小时前
PHP V6 单商户常见问题——如何修改访问域名默认跳转端口
php
catchadmin13 小时前
使用 PHP TrueAsync 改造 Laravel 协程异步化的可行路径
开发语言·php·laravel