# 生成海报
* * * * *
生成海报之前需要准备二维码和海报背景图。
二维码可参考上面的章节生成,并将路径保存到相应的数据表中。
海报可以根据实际情况处理,可以是静态固定的背景图片也可以是设置上传的背景图。
此处为演示方面暂时用静态图片演示海报生成功能。
上层代码如下
```
/**
* 生成海报
*/
public function demoPoster()
{
// windows
$poster_data = create_poster(
"D:/xampp/htdocs/OneBase/public/upload/extend/qrcode/e9ff27b4d969cfad54b5388c381e2022.png",
"D:/xampp/htdocs/OneBase/public/upload/extend/poster/poster_bg.jpg",
200,
[200,100]
);
// linux
/*
$poster_data = create_poster(
"./upload/extend/qrcode/e9ff27b4d969cfad54b5388c381e2022.png",
"./upload/extend/poster/poster_bg.jpg",
200,
[200,100]
);
*/
dump($poster_data);
}
```
海报生成函数如下 函数所在文件(app/extend.php)
```
/**
* 生成海报
* @param staring $qrcode_path 海报二维码图片路径
* @param staring $poster_bg_path 海报背景图片路径
* @param int $qrcode_size 二维码大小
* @param array $location 二维码位置,数组中包含2个值,分别代表x y距离,通过此参数调整二维码在海报中的位置
*/
function create_poster($qrcode_path = '', $poster_bg_path = '', $qrcode_size = 200, $location = [0,0])
{
// 海报目录路径
$poster_path = './upload/extend/poster/';
// 将二维码生成缩略图
if (file_exists($qrcode_path) && file_exists($poster_bg_path)) {
$qrcode_tmp_file = md5($qrcode_path).'_qrcode.jpg';
$qrcode_tmp_file_path = $poster_path . $qrcode_tmp_file;
$image_thumb = \think\Image::open($qrcode_path);
$image_thumb->thumb($qrcode_size, $qrcode_size,\think\Image::THUMB_SCALING)->save($qrcode_tmp_file_path);
$poster_file_name = md5($qrcode_path).'_poster.jpg';
$poster_file_path = $poster_path .$poster_file_name;
$image_water = \think\Image::open($poster_bg_path);
$image_water->water($qrcode_tmp_file_path, $location)->save($poster_file_path);
@unlink($qrcode_tmp_file_path);
$return_data['name'] = $poster_file_name;
$return_data['path'] = $poster_file_path;
return $return_data;
} else {
return false;
}
}
```
执行结果返回了海报的文件名称和保存的路径
```
array(2) {
["name"] => string(43) "847cc36b83d8c1fe3f97db5953e9fc46_poster.jpg"
["path"] => string(66) "./upload/extend/poster/847cc36b83d8c1fe3f97db5953e9fc46_poster.jpg"
}
```
效果图
![](https://img.kancloud.cn/23/5b/235bf8aa2fe1d0e64b852cd05bc1526e_650x866.jpg)
create_poster函数仅演示海报生成,若满足不了需求,比如您需要在海报中写入会员昵称。
可修改create_poster函数,调用$image->text()方法将文字写入海报。
- 序言
- 基础
- 安装环境
- 安装演示
- 规范
- 目录
- 介绍
- 后台介绍
- 后台首页
- 会员管理
- 系统管理
- 系统设置与配置管理
- 菜单管理
- 系统回收站
- 服务管理
- 插件管理
- 文章管理
- 接口管理
- 优化维护
- SEO管理
- 数据库
- 文件清理
- 行为日志
- 执行记录
- 统计分析
- 接口介绍
- 接口文档
- 错误码设计
- Token介绍
- 前台介绍
- 架构
- 架构总览
- 生命周期
- 入口文件
- 模块设计
- 依赖注入
- 控制器架构
- 逻辑架构
- 验证架构
- 服务架构
- 模型架构
- 行为架构
- 插件架构
- 配置
- 配置介绍
- 配置加载
- 配置扩展
- 请求
- 请求信息
- 日志
- 后台行为日志
- 系统执行日志
- 框架日志
- 数据
- 数据库设计
- 数据字典
- 数据库操作
- 事务控制
- 混合操作
- 实战
- 控制器
- 逻辑与验证
- 视图与模型
- 插件研发
- 服务研发
- 接口研发
- 杂项
- 数据导入导出
- 二维码条形码
- 邮件发送
- 云存储服务
- 支付服务
- 短信服务
- 微信分享
- 生成海报
- 聊天室
- PJAX
- Demo
- Widget
- 附录
- 常量参考
- 配置参考
- 函数参考
- 进阶
- Redis
- 自动缓存
- 全自动缓存
- 索引
- 数据签名
- 全自动事务
- 队列