3.3 - Coze 案例:产品营销海报生成
本案例概要
使用的插件 / 节点
| 类型 | 名称 / 能力 | 作用 |
|---|---|---|
| 图像生成 | 图像处理 → 图像生成 | 根据提示词做文生图,支持不同宽高比(如 2:3);按 proportion 分支选择对应比例与模型。 |
| 指令编辑 | 指令编辑插件 | 改图:在用户上传的原图基础上,按提示词进行编辑。 |
| 画质提升 | 画质提升插件 | 变清晰:对用户上传的图片做清晰度增强(无需提示词)。 |
| 叠图 | 叠图插件 | 将二维码或 logo 叠加到底图上,可按位置参数(如 qr_place)指定相对位置与缩放比例。 |
【插件说明】
图片缩放 - 插件 - 扣子
https://www.coze.cn/store/plugin/7438917029320491008
指令编辑 - 插件 - 扣子
https://www.coze.cn/store/plugin/7436679907834626084
插件 - 扣子
https://www.coze.cn/store/plugin/7438835880728526898
叠图 - 插件 - 扣子
https://www.coze.cn/store/plugin/7438921536473612288技术要点
- 双工作流:本案例包含 img_generate(生成/导出海报)和 read_history(查询历史记录);界面通过调用这两个工作流完成「生成」与「历史」能力。
- 生图 / 导出分流:根据
logo_place是否为空区分生图链路与导出链路;生图链路产出海报图,导出链路在已有图上加二维码和 logo。 - 生图链路分支:
img为空时为文生图,按proportion路由到不同宽高比的生图节点;img不为空时为改图或变清晰(由提示词是否为空区分)。 - 导出链路:先根据
qr_img是否为空决定用用户二维码或官方二维码,用叠图插件叠加到底图;再按同样方式用叠图插件添加 logo;两路分支通过变量聚合合并为统一 output。 - 持久化:生图/导出后的图片与提示词写入数据表 Generation;read_history 从该表查询记录并返回列表供界面展示。
工作流程概览
img_generate:
开始(logo_place, img, proportion, prompt, qr_img, qr_place, …)
↓
分支:logo_place 是否为空?
├─ 为空 → 生图链路
│ ├─ img 为空 → 文生图:按 proportion 分支 → 图像生成(提示词) → 海报图
│ └─ img 不为空 → 改图 / 变清晰(指令编辑 或 画质提升)→ 海报图
└─ 不为空 → 导出链路
├─ 按 qr_img 添加二维码(用户二维码或官方二维码)→ 叠图
└─ 添加 logo → 叠图
↓
变量聚合 → 写入 Generation 表 → 结束:输出 output(图片)read_history: 开始 → 数据库查询 Generation 表 → 结束:返回 outputList(历史记录列表)。
1、打开官方模板页面

右侧展示的都是官方模板。
2、选择模板

3、复制模板



4、分析工作流
此处可以看到两个工作流。

4.1 img_generate
这是关键的生成图片的逻辑。
4.1.1 开始

4.1.2 导出链路判定

根据 logo_place 判断是否为导出链路,前者为空则不是导出,反之亦然。
2.1 生图链路
logo_place 为空说明是生图链路。
判断是否为文生图链路

如果 img 参数为空则说明是文生图,否则是图生图。
2.1.1 文生图
根据具体的宽高比生成图片。
首先由一个分支节点根据不同的 propotion 路由至不同的生图节点

然后在不同的分支选择不同的生图比例,并选好生图模型,将用户的提示词作为生图提示词传入。
以 2:3 为例。

此处的生图节点都是图像处理下的图像生成节点。

2.1.2 改图
如果 img 不为空则是改图。
根据提示词判定是改图还是变清晰,如果提示词不为空是改图,否则为变清晰。

改图
将原图和提示词填入。

改图节点选择的是指令编辑插件。

变清晰
将原图填入。

变清晰节点选择的是画质提升插件。

2.2 导出链路
2.2.1 添加二维码
根据 qr_img 参数是否为空判断用户是否上传了二维码

① 如果用户上传了二维码
调整用户二维码图片大小,最大尺寸不超过 200 像素

添加用户二维码

将调整后的用户二维码作为上层图,将传入的图片作为底图,上层图已经经过了尺寸调整,缩放比例为 100%,即不缩放。并根据 qr_place 指定上层图的相对位置。
此处使用的是叠图插件

② 如果用户没有上传二维码
则直接添加扣子官方二维码,并按照 ① 中相同的方式叠图。

官方的二维码图片尺寸是固定的,所以直接按照指定的 30%比例缩放。
变量聚合
通过变量聚合节点将两个分支的数据聚合在一起,下游只需要处理同一个变量 output 即可。

多个分支的数据只有一个是存在的,直接将其拼接在一起,最终的效果就是执行哪个分支,哪个分支的输出就作为变量聚合后的 output。
2.2.2 添加 logo
逻辑和二维码添加相同,略。

4.1.3 变量聚合
无论上游是导出链路还是生图链路,最终输出的都是图片,聚合在一起作为 output 传输至下游。

4.1.4 写入数据库

将生成的图片和提示词存入数据表 Generation,该节点会将写入的行号和当前数据表中的数据列表输出至下游。当前链路中输出的数据无用。
数据表

官方在当前应用中创建了一个数据表 Generation,字段如上所示。
4.1.5 结束
最终将变量聚合节点的 output 输出,无论执行哪个分支,生成的图片都会被输出。

4.2 read_history
4.2.1 开始

只有一个参数,该参数是用户在本轮对话中输入的内容,然而,在 UI 界面调用该工作流时该参数恒为空。可理解为开始节点实际上没有参数。
4.2.2 数据库节点

从数据表 Generation 查询所有记录的图片、写入时间和提示词,作为列表 outputList 返回,同时返回行号。
4.2.3 结束节点

将数据库节点查询到的数据作为 output 返回。
5、用户界面
官方提供两个用户界面,可以通过左侧结构-图层查看所有页面的所有组件。

查看属性和事件标签,就可以知道何时及如何调用工作流,此处不展开。